Estou substituindo um roteador / firewall sem fio que executa o Tomato por um servidor Debian, e fiquei animado por ter encontrado a configuração do iptables do tomate para que eu pudesse importá-lo diretamente para o novo servidor (minha pergunta antes disso). O arquivo de configuração do iptables (na parte inferior) do Tomato falha em iptables-restore no Debian:
# iptables-restore < iptables.eth0-eth1
iptables-restore v1.4.14: Couldn't load match 'mport':No such file or directory
Error occurred at line: 7
Try 'iptables-restore -h' or 'iptables-restore --help' for more information.
Existe uma maneira de colocar o mport em iptables "modernos"?
Ou você poderia me ajudar a traduzir mport
para multiport
?
Pesquisando iptables mport
foi muito difícil, mas eu finalmente encontrei alguém que se queixou de mport se foi e um tutorial multiportas com referência de passagem à extensão mport, o que me levou a bisbilhotar os sistemas de arquivos da caixa dupla módulos e também tentando todas as ferramentas de "firewall" que o Debian tem, desejando que um venha magicamente com mport
. Eu admito ser muito mimada pela interface de usuário do Tomato - todo pacote Debian que eu tentei desde que me deixou mais e mais confuso (gui ou cli). Se eu conseguisse que o servidor roteasse tudo rapidamente, acho que mason
poderia funcionar. Não é de admirar que todo mundo odeia iptables.
Passei mais tempo tentando descobrir os erros do que deveria. Se eu tivesse gasto tanto tempo tentando entender iptables
, provavelmente poderia ter traduzido as regras mport
para multiport
. Além disso, eu pensei em postar no SuperUser, no entanto, as poucas perguntas marcadas do iptables não estavam no mesmo patamar que as que estou lendo aqui no ServerFault.
Procurando por módulos:
Eu ssh'd no roteador sem fio com tomato
firmware, encontrei o módulo libipt_mport.so em /usr/lib/iptables
. Mas no diretório /lib/modules/2.4.20/kernel/net/ipv4/netfilter
, não há libipt_mport.so , somente ipt_multiport.o
.
Na caixa Debian (nova instalação do wheezy), usei updatedb
e locate
para pesquisar em MASQ
(para o objeto MASQUERADE) e encontrei o diretório que% /lib/modules/3.2.0-4-amd64/kernel/net/ipv4/netfilter
tem uma boa matriz de iptable_*
e nf_nat_*
ko
arquivos. A pesquisa também encontrou libxt_multiport.so
em /lib/xtables
, mas não há referência a módulos de objeto para mport
.
Além disso, existem outros problemas abaixo? Eu vejo o material da camada 7 e tenho a sensação de que isso fará com que mais complicações ocorram.
Arquivo de configuração do Tomato:
Notas:
»99.1.81.209 é ip da WAN
»10.0.0.2 é ip para este firewall do Debian
»10.0.0.20 é um servidor
»Interface pública do tomate vlan0
alterado para eth0
»Interface interna do tomate br0
alterado para eth1
»As portas 5060: 5090 são para VoIP (provavelmente não precisam de toda a gama?)
*mangle
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:QOSO - [0:0]
-A QOSO -j CONNMARK --restore-mark --mask 0xff
-A QOSO -m connmark ! --mark 0/0xff00 -j RETURN
-A QOSO -p tcp -m mport --dports 80,443 -m bcount --range 0x0-0x7ffff -j CONNMARK --set-return 0x2/0xFF
-A QOSO -p tcp -m mport --dports 80,443 -m bcount --range 0x80000 -j CONNMARK --set-return 0x4/0xFF
-A QOSO -p udp --dport 53 -m bcount --range 0x0-0x7ff -j CONNMARK --set-return 0x1/0xFF
-A QOSO -p tcp --dport 53 -m bcount --range 0x0-0x7ff -j CONNMARK --set-return 0x1/0xFF
-A QOSO -p udp --dport 53 -m bcount --range 0x800 -j CONNMARK --set-return 0x5/0xFF
-A QOSO -p tcp --dport 53 -m bcount --range 0x800 -j CONNMARK --set-return 0x5/0xFF
-A QOSO -p udp --dport 1024:65535 -j CONNMARK --set-return 0x5/0xFF
-A QOSO -p tcp --dport 1024:65535 -j CONNMARK --set-return 0x5/0xFF
-A QOSO -p udp -m mport --ports 5060:5090 -m layer7 --l7dir /etc/l7-protocols --l7proto sip -j CONNMARK --set-return 0x101/0xFF
-I QOSO -j BCOUNT
-A QOSO -j CONNMARK --set-return 0x4
-A FORWARD -o eth0 -j QOSO
-A OUTPUT -o eth0 -j QOSO
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -i eth0 -d 10.0.0.2/255.255.255.0 -j DROP
-A PREROUTING -p icmp -d 99.1.81.209 -j DNAT --to-destination 10.0.0.2
-A PREROUTING -p tcp -m tcp -d 99.1.81.209 --dport 22 -j DNAT --to-destination 10.0.0.2:22
-A PREROUTING -p tcp -d 99.1.81.209 --dport 10022 -j DNAT --to-destination 10.0.0.20:22
-A POSTROUTING -p tcp --dport 22 -s 10.0.0.2/255.255.255.0 -d 10.0.0.20 -j SNAT --to-source 99.1.81.209
:upnp - [0:0]
-A PREROUTING -d 99.1.81.209 -j upnp
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i eth1 -d 99.1.81.209 -j DROP
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-N shlimit
-A shlimit -m recent --set --name shlimit
-A shlimit -m recent --update --hitcount 3 --seconds 60 --name shlimit -j DROP
-A INPUT -p tcp --dport 22 -m state --state NEW -j shlimit
-A INPUT -i eth1 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp -d 10.0.0.2 --dport 22 -j ACCEPT
:FORWARD DROP [0:0]
-A FORWARD -i eth1 -o eth1 -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1461: -j TCPMSS --set-mss 1460
:L7in - [0:0]
-A FORWARD -i eth0 -j L7in
-A L7in -m layer7 --l7dir /etc/l7-protocols --l7proto sip -j RETURN
:wanin - [0:0]
:wanout - [0:0]
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -j wanin
-A FORWARD -o eth0 -j wanout
-A FORWARD -i eth1 -j ACCEPT
:upnp - [0:0]
-A FORWARD -i eth0 -j upnp
-A wanin -p tcp -m tcp -d 10.0.0.20 --dport 22 -j ACCEPT
COMMIT