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