Existem diversas variações de NAT que podem ser configuradas com IPTABLES. Este artigo visa mostrar alguns exemplos de SNAT, DNAT com iptables.
Mascarar todos os pacotes de saída como IP WLAN0
iptables -t nat -A PREROUTING -s 192.168.1.2 -i eth0 -j MASQUERADE
Todos os pacotes que saem da eth0 terão endereço IP src eth0
iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to 192.168.1.1
Regra de correspondência especificando uma porta de origem
Abaixo, certifique-se de que os pacotes dos dispositivos Eth tenham o endereço IP de origem correto. Aviso: ao especificar uma porta, o protocolo também precisa ser especificado.
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.1.2 -p udp –dport 16020 -j SNAT –to 10.1.1.7:51889
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.1.2 -p tcp –dport 21 -j SNAT –to 10.1.1.7:21
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.1.3 -j SNAT –to 10.1.1.9
Pacotes destinados ao IP 10.1.1.7 serão encaminhados para 192.168.1.2 UDP,TCP
Pacotes destinados ao IP 10.1.1.9 serão encaminhados para 192.168.1.3 UDP,TCP
Funciona corretamente com ping (ICMP)
iptables -t nat -A PREROUTING -i wlan0 -d 10.1.1.7 -j DNAT –to-destination 192.168.1.2 iptables -t nat -A PREROUTING -i wlan0 -d 10.1.1.9 -j DNAT –to-destination 192.168.1.3
Pacotes destinados ao IP 10.1.1.7 serão encaminhados para 192.168.1.2 UDP,TCP
NÃO funciona corretamente com ping (ICMP), não suporta resposta IP WLAN do protocolo ICMP em um ping sem
iptables -t nat -A PREROUTING -p tcp -i wlan0 -d 10.1.1.7 -j DNAT –to-destination 192.168.1.2 iptables -t nat -A PREROUTING -p udp -i wlan0 -d 10.1.1.7 -j DNAT –to-destination 192.168.1.2
Alterar a porta SNMP de mensagens SNMP de saída
iptables -t nat -A OUTPUT -p udp –dport 162 -j DNAT –to-destination 192.168.1.33:1162
Adicione IP secundário à WLAN0
ip addr add 10.1.1.7/24 dev wlan0 ip addr add 10.1.1.9/24 dev wlan0
Liste todos os endereços IP atribuídos a wlan0
ip add list dev wlan0
Todos os pacotes que saem da eth1 mudarão o IP de origem para 192.168.20.1
iptables -t nat -A POSTROUTING -o eth1 -j SNAT –to 192.168.20.1
Todos os pacotes TCP que saem da eth1 na porta 443 mudarão o IP de origem para 192.168.20.1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.22 -p tcp –dport 443 -j SNAT –to 192.168.20.1:443
Todos os pacotes ICMP que saem da eth1 mudarão o IP de origem para 192.168.20.1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.22 -p icmp -j SNAT –to 192.168.20.1
Todos os pacotes suportados saindo da eth1 que possuem IP de origem 192.168.1.22 mudarão o IP de origem para 192.168.20.1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.22 -p all -j SNAT –to 192.168.20.1
SNAT na interface de atribuição dinâmica
uso com modo duplo de WIFI, onde o WiFi pode ser AP e STA ao mesmo tempo, adicionado ao script de inicialização
assumindo que wlan1 é STA interface ip=$(ip -o addr show up primário escopo global wlan1 | while read -r num dev fam addr rest; do echo ${addr%/*}; done) echo $ip # todos os pacotes saindo wlan1 mudará o IP de origem para IP da interface STA iptables -t nat -A POSTROUTING -o wlan1 -j SNAT –to $ip
Bloquear o tráfego de ETH0 para Cell, exceto NTP
A ordem é importante pois o DROP terminará após permitir a comunicação com o servidor NTP. Por esse motivo precisamos INSERIR as regras. Se usado APPEND a ordem dos comandos deverá ser invertida para garantir que DROP seja o último.
iptables -I FORWARD -i eth0 -o usb0 -j DROP iptables -I FORWARD -d pool.ntp.org -i eth0 -o usb0 -j ACCEPT
Bloqueie o tráfego na ETH1 com base nas portas
Útil quando você tem um dispositivo atrás do roteador e deseja limitar sua capacidade de usar/explorar recursos no roteador.
Use com cuidado, pois você pode se bloquear.
Bloqueia a porta 80 (http) apenas na interface ETH1
iptables -t filter -A INPUT -i eth1 -p tcp –dport 80 -j DROP
Bloqueia a porta 443 (https) apenas na interface ETH1
iptables -t filter -A INPUT -i eth1 -p tcp –dport 80 -j DROP
Bloqueia a porta 22 (ssh) somente na interface ETH1
iptables -t filter-A INPUT -i eth1 -p tcp –dport 22 -j DROP
Bloqueia ping (icmp) na unidade de interface. ETH1 não responde ao ping
iptables -t filter -A INPUT -i eth1 -p icmp -j DROP
Verificando a tabela NAT
A tabela iptables precisa ser especificada para listagem. POR EXEMPLO. nat, mangle.
iptables -t nat -L -n -v