Altera a porta de origem das solicitações NTP no roteador usando iptables

0

Meu ISP bloqueia a porta udp de saída 123. Isso impede que o ntpd obtenha atualizações ntp. Como faço para que meu roteador (Asus router executando o Asuswrt Merlin) altere automaticamente o número da porta de 123 para outra coisa? Eu tentei usar a seguinte regra iptables, mas não parece funcionar no roteador. A regra funciona quando eu a coloco em máquinas Linux individuais, mas eu quero evitar fazer isso em todas elas.

iptables -t nat -I POSTROUTING 1 -p udp --sport 123 -j SNAT --to-source :12512

Acho que no meu roteador eu precisaria fazer a alteração de porta e o MASQUERADE ao mesmo tempo, mas não sei se isso é possível.

Aqui estão as entradas da minha tabela POSTROUTING nat no meu roteador. Eu tentei colocar a regra ntp em primeiro e segundo.

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    SNAT       udp  --  anywhere             anywhere             udp spt:ntp to::12512
2    MASQUERADE  all  -- !<my external IP>    anywhere
    
por Gunny 20.02.2017 / 06:20

2 respostas

2

Usar o NAT de origem para reconfigurar o número da porta de origem de 123 não alteraria o fato de que você ainda está se conectando a servidores NTP remotos que escutam na porta 123 destino . Quando seu ISP bloqueia o tráfego NTP de saída, ele provavelmente bloqueia os pacotes UDP para o dport 123 e a alteração da porta de origem não faz diferença.

Basta perguntar ao seu ISP quais servidores NTP eles fornecem que você pode usar.

    
por 20.02.2017 / 08:38
0

Para que funcione no seu roteador, você precisa adicionar especificamente o endereço da sua interface externa (voltada para a Internet pública) à regra. Caso contrário, você está enviando o pacote para a Internet com seu endereço IP privado como fonte. Pode ser possível que seu kernel específico, a versão do netfilter, se comporte de maneira diferente. Você pode verificar o que está acontecendo com o tcpdump.

iptables -t nat -I POSTROUTING 1 -p udp --sport 123 -j SNAT --to-source {PUBLIC_IP}:12512

Então (assumindo que eth1 é sua interface de internet):

tcpdump -ni eth1 port 123

Isto é o que eu tenho em /etc/firewall.user no OpenWRT:

P_IP='/sbin/ifconfig eth1 | awk '/inet addr/{print substr($2,6)}''
/usr/sbin/iptables -t nat -I postrouting_rule -p udp -o eth1 --sport 123 --dport 123 -j SNAT --to $P_IP:12300

Não se esqueça de limpar as tabelas do conntrack depois de fazer alterações no firewall, se quiser ver os resultados imediatamente, no OpenWRT:

echo f > /proc/net/nf_conntrack

Caso contrário, pode ser realmente confuso o que está acontecendo.

    
por 14.03.2018 / 13:42

Tags