Estou trabalhando na configuração de uma máquina Linux como roteador e peguei o arquivo /etc/iptables do roteador tomate. Eu gostaria de usar este arquivo como ponto de partida para as regras de firewall na caixa Linux.
Há muitas coisas lá que acho que entendo e algumas coisas sobre as quais não tenho ideia e gostaria de receber ajuda. "vlan2" é a interface externa e "br0" é a interface interna.
A primeira seção do arquivo é
*mangle
-I PREROUTING -i vlan2 -j DSCP --set-dscp 0
-I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT
A primeira linha reescreve os bits DSCP no TOS inserido no cabeçalho IP, não sei por que. A segunda linha eu não entendo nada.
A próxima seção é
*nat
-A PREROUTING -d 67.162.98.230 -j WANPREROUTING
-A PREROUTING -i vlan2 -d 192.168.1.1/255.255.255.0 -j DROP
-A WANPREROUTING -p icmp -j DNAT --to-destination 192.168.1.1
-A WANPREROUTING -p tcp --dport 4662 -j DNAT --to-destination 192.168.1.12:4662
-A WANPREROUTING -p udp --dport 4665 -j DNAT --to-destination 192.168.1.12:4665
-A WANPREROUTING -p udp --dport 4672 -j DNAT --to-destination 192.168.1.12:4672
-A WANPREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.1.12:22
-A WANPREROUTING -p udp --dport 1195 -j DNAT --to-destination 192.168.1.12:1195
-A POSTROUTING -o vlan2 -j MASQUERADE
-A POSTROUTING -o br0 -s 192.168.1.1/255.255.255.0 -d 192.168.1.1/255.255.255.0 -j SNAT --to-source 192.168.1.1
COMMIT
As linhas 2 e 3 definem o alvo WANPREROUTING para qualquer coisa que chegue à interface externa, exceto pacotes destinados a uma rede privada que são descartados. As próximas linhas definem o destino de algumas portas e protocolos, a serem usados para encaminhamento de porta. A linha MASQUERADE configura NAT. Não tenho certeza do que faz a última linha antes do COMMIT.
Dividirei a última seção em várias partes e inserirei números de linha antes das regras.
*filter
1 -A INPUT -m state --state INVALID -j DROP
2 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
3 -A INPUT -i lo -j ACCEPT
4 -A INPUT -i br0 -j ACCEPT
As linhas 1,2 descartam pacotes recebidos (para qualquer interface) com estados inválidos e aceitam pacotes de conexões estabelecidas. As linhas 3, 4 aceitam tudo que chega ao loopback e às interfaces internas.
5 -A FORWARD -i br0 -o br0 -j ACCEPT
6 -A FORWARD -m state --state INVALID -j DROP
7 -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Realmente não tenho certeza do que as três linhas acima fazem, especialmente a primeira (pacotes encaminhados de br0 para br0?)
12 -A FORWARD -i vlan2 -j wanin
13 -A FORWARD -i br0 -j ACCEPT
14 -A wanin -p tcp -m tcp -d 192.168.1.12 --dport 4662 -j ACCEPT
15 -A wanin -p udp -m udp -d 192.168.1.12 --dport 4665 -j ACCEPT
16 -A wanin -p udp -m udp -d 192.168.1.12 --dport 4672 -j ACCEPT
17 -A wanin -p tcp -m tcp -d 192.168.1.12 --dport 22 -j ACCEPT
18 -A wanin -p udp -m udp -d 192.168.1.12 --dport 1195 -j ACCEPT
As linhas 12, 14-18 tratam do encaminhamento de porta. Não tenho certeza sobre 13, isso significa aceitar tudo roteado pela interface br0?
Você poderia comentar se minhas suposições acima estão corretas e também explicar as regras que não consegui descobrir. Obrigado por ler.