Добрый день!
Есть прозрачный прокси сервер XRAY который проксирует всё и маркирует свой трафик:
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"tag": "all-in",
"port": 12345,
"protocol": "dokodemo-door",
"settings": {
"network": "tcp,udp",
"followRedirect": true
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
},
"streamSettings": {
"sockopt": {
"tproxy": "tproxy"
}
}
}
],
"outbounds": [
{
....Настройки сервера
},
"streamSettings": {
"sockopt": {
# Маркировка проксированного трафика
"mark": 255
},
....Настройки сервера
}
}
},
},
{
"tag": "dns-out",
"protocol": "dns",
"streamSettings": {
"sockopt": {
"mark": 255
}
}
}
],
"dns": {
"servers": [
"https://1.1.1.1/dns-query",
"https://dns.google/dns-query",
]
},
"routing": {
"domainMatcher": "mph",
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"inboundTag": ["all-in"],
"port": 53,
"network": "udp",
"outboundTag": "dns-out"
},
{
"type": "field",
"ip": ["1.1.1.1", "8.8.8.8"],
"outboundTag": "proxy"
},
]
}
}
iptables на пк с прокси, прописан net.ipv4.ip_forward=1
# Исключаем трафик прокси и другое
iptables -t mangle -N XRAY
iptables -t mangle -A XRAY -d 127.0.0.1/32 -j RETURN
iptables -t mangle -A XRAY -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A XRAY -d 255.255.255.255/32 -j RETURN
iptables -t mangle -A XRAY -d 192.168.0.0/24 -p tcp -j RETURN
iptables -t mangle -A XRAY -d 192.168.0.0/24 -p udp ! --dport 53 -j RETURN
iptables -t mangle -A XRAY -j RETURN -m mark --mark 0xff
iptables -t mangle -A XRAY -p udp -j TPROXY --on-ip 127.0.0.1 --on-port 12345 --tproxy-mark 1
iptables -t mangle -A XRAY -p tcp -j TPROXY --on-ip 127.0.0.1 --on-port 12345 --tproxy-mark 1
iptables -t mangle -A PREROUTING -j XRAY
iptables -t mangle -N XRAY_MASK
iptables -t mangle -A XRAY_MASK -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A XRAY_MASK -d 255.255.255.255/32 -j RETURN
iptables -t mangle -A XRAY_MASK -d 192.168.0.0/24 -p tcp -j RETURN
iptables -t mangle -A XRAY_MASK -d 192.168.0.0/24 -p udp ! --dport 53 -j RETURN
iptables -t mangle -A XRAY_MASK -j RETURN -m mark --mark 0xff
iptables -t mangle -A XRAY_MASK -p udp -j MARK --set-mark 1
iptables -t mangle -A XRAY_MASK -p tcp -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -j XRAY_MASK
iptables -t mangle -N DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -I PREROUTING -p tcp -m socket -j DIVERT
Всё отлично работает, если на другом клиентском ПК настроить шлюзом этот пк с прокси.
Как направить трафик через микротик? (Клиентские ПК -> Микротик -> Прокси) На микротике как-то так:
/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark connection-state=new dst-address-list=to-proxy new-connection-mark=to-proxy-conn
add action=mark-routing chain=prerouting connection-mark=to-proxy-conn new-routing-mark=proxy
/ip route
add distance=1 dst-address=0.0.0.0/0 gateway=192.168.0.5 routing-table=proxy scope=30 suppress-hw-offload=no target-scope=10
Т.е. по отдельности всё работает, проблема связать микротик и прокси. Все ПК находятся в одной сети 192.168.0.0/24