iptables set-mark не работает

У моей машины два сетевых интерфейса: один проводной (eth0), а другой - беспроводной (wlan0). Проводной не может подключиться к какому-либо внешнему NTP-серверу, потому что снаружи есть брандмауэр. Беспроводной не имеет такого ограничения.

Поэтому я хочу направить весь трафик NTP на wlan0. Как я знаю, трафик NTP проходит через порт UDP 123. То, что я сделал, описано ниже.

$ sudo echo "201 ntp.out" >> /etc/iproute2/rt_tables
$ sudo ip route add default via 100.75.0.1 dev wlan0 table ntp.out

$ sudo sysctl -w net.ipv4.tcp_fwmark_accept=1
$ sudo iptables -t mangle -I PREROUTING -p udp --dport 123 -j MARK --set-mark 0xfefa
$ sudo iptables -t mangle -I OUTPUT -p udp --sport 123 -j MARK --set-mark 0xfefa
$ sudo ip rule add fwmark 0xfefa lookup ntp.out

Тем не менее, это не работает. Я использовал Wireshark для отслеживания пакетов UDP:123 и обнаружил, что в пакетах нет отметки "fefa".

Кстати, я установил net.ipv4.tcp_fwmark_accept, а не net.ipv4.udp_fwmark_accept, потому что нет определенного net.ipv4.udp_fwmark_accept. Я также пытался пометить пакеты TCP, но все еще не мог найти отметку в этих пакетах.

Кто-нибудь может помочь мне решить проблему? Я использую Ubuntu 14.04 LTS.

1 ответ

Я думаю, что я нахожу ошибку. В не исходный порт 123 затем пункт назначения

+ Изменить

 sudo iptables -t mangle -I OUTPUT -p udp --sport 123 -j MARK --set-mark 0xfefa

в

 sudo iptables -t mangle -I OUTPUT -p udp --dport 123 -j MARK --set-mark 0xfefa

Также скопируйте все записи, кроме записи шлюза по умолчанию из основной таблицы

 sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table ntp.out $ROUTE; done
Другие вопросы по тегам