Если борьба заключается в модификации TTL, то простейший способ решения этой проблемы – изменять TTL для всех нужных нам пакетов.
Делается примерно так:
mkdir -p /usr/local/sbin
echo "#!/bin/sh" >> /usr/local/sbin/pre-boot
echo "echo 128 > /proc/sys/net/ipv4/ip_default_ttl" >> /usr/local/sbin/pre-boot
echo "insmod ipt_ttl" >> /usr/local/sbin/pre-boot
echo "insmod ipt_TTL" >> /usr/local/sbin/pre-boot
chmod +x /usr/local/sbin/pre-boot
echo "#!/bin/sh" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -F" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 127 -o \$1 -j TTL --ttl-set 128" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 1 -i \$1 -j TTL --ttl-set 2" >> /usr/local/sbin/post-firewall
chmod +x /usr/local/sbin/post-firewall
flashfs save && flashfs commit && flashfs enable
reboot
Если у Вас используется комбинация PPTP/PPPoE/L2TP + домовая сеть, то это будет выглядеть так:
mkdir -p /usr/local/sbin
echo "#!/bin/sh" >> /usr/local/sbin/pre-boot
echo "echo 128 > /proc/sys/net/ipv4/ip_default_ttl" >> /usr/local/sbin/pre-boot
echo "insmod ipt_ttl" >> /usr/local/sbin/pre-boot
echo "insmod ipt_TTL" >> /usr/local/sbin/pre-boot
chmod +x /usr/local/sbin/pre-boot
echo "#!/bin/sh" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -F" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 127 -o \$1 -j TTL --ttl-set 128" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 1 -i \$1 -j TTL --ttl-set 2" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 127 -o \$(nvram get wan_ifname) -j TTL --ttl-set 128" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 1 -i \$(nvram get wan_ifname) -j TTL --ttl-set 2" >> /usr/local/sbin/post-firewall
chmod +x /usr/local/sbin/post-firewall
flashfs save && flashfs commit && flashfs enable
reboot