Добрый вечер! Пришло время разобраться с TProxy для ipv4.
Беру любой сервис (например v2ray,ss,squid и т.д.), который слушает определенный порт на роутере, например 9172, и пересылает траффик в режиме tproxy на удаленный сервер.
Пишу симметричные скрипты для ipv4 и для ipv6 траффика.
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Question
avn
Добрый вечер! Пришло время разобраться с TProxy для ipv4.
Беру любой сервис (например v2ray,ss,squid и т.д.), который слушает определенный порт на роутере, например 9172, и пересылает траффик в режиме tproxy на удаленный сервер.
Пишу симметричные скрипты для ipv4 и для ipv6 траффика.
/opt/etc/ndm/netfilter.d/10m-ss4.sh
#!/bin/sh [ "$type" != "iptables" ] && exit 0 [ "$table" != "mangle" ] && exit 0 ip4t() { if ! iptables -C "$@" &>/dev/null; then iptables -A "$@" || exit 0 fi } # V2Ray ip -4 route add local default dev lo table 233 2>/dev/null ip -4 route show table main |grep -Ev ^default |while read ROUTE; do ip -4 route add table 233 $ROUTE 2>/dev/null; done ip -4 rule add fwmark 0x2333 table 233 priority 233 2>/dev/null iptables -N SSREDIR -t mangle 2>/dev/null #iptables -F SSREDIR -t mangle 2>/dev/null # connection-mark -> packet-mark ip4t SSREDIR -t mangle -m mark --mark 0x2334 -j RETURN ip4t SSREDIR -t mangle -j CONNMARK --restore-mark ip4t SSREDIR -t mangle -m mark --mark 0x2333 -j RETURN ip4t SSREDIR -t mangle -d 0.0.0.0/8 -j RETURN ip4t SSREDIR -t mangle -d 10.0.0.0/8 -j RETURN ip4t SSREDIR -t mangle -d 100.64.0.0/10 -j RETURN ip4t SSREDIR -t mangle -d 127.0.0.0/8 -j RETURN ip4t SSREDIR -t mangle -d 169.254.0.0/16 -j RETURN ip4t SSREDIR -t mangle -d 172.16.0.0/12 -j RETURN ip4t SSREDIR -t mangle -d 192.0.0.0/24 -j RETURN ip4t SSREDIR -t mangle -d 192.0.2.0/24 -j RETURN ip4t SSREDIR -t mangle -d 192.168.0.0/16 -j RETURN ip4t SSREDIR -t mangle -d 198.18.0.0/15 -j RETURN ip4t SSREDIR -t mangle -d 198.51.100.0/24 -j RETURN ip4t SSREDIR -t mangle -d 203.0.113.0/24 -j RETURN ip4t SSREDIR -t mangle -d 224.0.0.0/3 -j RETURN ip4t SSREDIR -t mangle -p tcp --syn -j MARK --set-mark 0x2333 ip4t SSREDIR -t mangle -p udp -m conntrack --ctstate NEW -j MARK --set-mark 0x2333 ip4t SSREDIR -t mangle -j CONNMARK --save-mark ip4t PREROUTING -t mangle -i br0 -p tcp -d 34.160.111.145 -j SSREDIR ip4t PREROUTING -t mangle -i br0 -p tcp -m mark --mark 0x2333 -j TPROXY --on-port 9172 ip4t PREROUTING -t mangle -i br0 -p udp -d 34.160.111.145 -j SSREDIR ip4t PREROUTING -t mangle -i br0 -p udp -m mark --mark 0x2333 -j TPROXY --on-port 9172 exit 0
/opt/etc/ndm/netfilter.d/10m-ss6.sh
#!/bin/sh [ "$type" != "ip6tables" ] && exit 0 [ "$table" != "mangle" ] && exit 0 ip6t() { if ! ip6tables -C "$@" &>/dev/null; then ip6tables -A "$@" || exit 0 fi } # V2Ray ip -6 route add local default dev lo table 233 2>/dev/null ip -6 route show table main |grep -Ev ^default |while read ROUTE; do ip -6 route add table 233 $ROUTE 2>/dev/null; done ip -6 rule add fwmark 0x2333 table 233 priority 233 2>/dev/null ip6tables -N SSREDIR -t mangle 2>/dev/null #ip6tables -F SSREDIR -t mangle 2>/dev/null # connection-mark -> packet-mark ip6t SSREDIR -t mangle -m mark --mark 0x2334 -j RETURN ip6t SSREDIR -t mangle -j CONNMARK --restore-mark ip6t SSREDIR -t mangle -m mark --mark 0x2333 -j RETURN ip6t SSREDIR -t mangle -d 0000::/8 -j RETURN ip6t SSREDIR -t mangle -d 0100::/64 -j RETURN ip6t SSREDIR -t mangle -d 0200::/7 -j RETURN ip6t SSREDIR -t mangle -d 2001:0002::/48 -j RETURN ip6t SSREDIR -t mangle -d 2001:0010::/28 -j RETURN ip6t SSREDIR -t mangle -d 2001:0db8::/32 -j RETURN ip6t SSREDIR -t mangle -d 2002::/16 -j RETURN ip6t SSREDIR -t mangle -d 3ffe::/16 -j RETURN ip6t SSREDIR -t mangle -d fc00::/7 -j RETURN ip6t SSREDIR -t mangle -d fe80::/10 -j RETURN ip6t SSREDIR -t mangle -d fec0::/10 -j RETURN ip6t SSREDIR -t mangle -d ff00::/8 -j RETURN ip6t SSREDIR -t mangle -p tcp --syn -j MARK --set-mark 0x2333 ip6t SSREDIR -t mangle -p udp -m conntrack --ctstate NEW -j MARK --set-mark 0x2333 ip6t SSREDIR -t mangle -j CONNMARK --save-mark ip6t PREROUTING -t mangle -i br0 -p tcp -d 2600:1901:0:b2bd:: -j SSREDIR ip6t PREROUTING -t mangle -i br0 -p tcp -m mark --mark 0x2333 -j TPROXY --on-port 9172 ip6t PREROUTING -t mangle -i br0 -p udp -d 2600:1901:0:b2bd:: -j SSREDIR ip6t PREROUTING -t mangle -i br0 -p udp -m mark --mark 0x2333 -j TPROXY --on-port 9172 exit 0
Так же сделаны настройки роутера
system set net.ipv4.ip_forward 1 set net.ipv6.conf.all.forwarding 1 set net.ipv4.tcp_fwmark_accept 1 !
Тесты:
curl -4v https://ipecho.net/plain -- не работает
curl -6v https://ipecho.net/plain -- работает
Что не так для ipv4? Уже все ядро перелопатил, все должно работать.
Link to comment
Share on other sites
14 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.