
Estou substituindo um roteador/firewall sem fio rodando o Tomato por um servidor Debian, e fiquei animado por ter encontrado a configuração do iptables do tomate para que eu pudesseimporte-o diretamente para o novo servidor(minha pergunta antes disso). O arquivo de configuração iptables (na parte inferior) do Tomato falha iptables-restoreno 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 importar para iptables "modernos"?
Ou você poderia me ajudar a traduzir mport
para multiport
?
Pesquisar no Google iptables mport
foi muito difícil, mas acabei descobrindoalguém reclamando que o mport sumiue umtutorial multiportacom referência passageira à extensão mport, o que me levou a bisbilhotar os sistemas de arquivos das duas caixas em busca de módulos e também a tentar todas as ferramentas de "firewall" que o Debian possui, desejando que uma delas viesse magicamente com o mport
. Admito que fiquei bastante estragado com a interface de usuário do Tomato - todos os pacotes Debian que experimentei desde então me deixaram cada vez mais confuso (gui ou cli). Se eu conseguisse fazer com que o servidor roteasse tudo brevemente, acho que mason
poderia funcionar. Não admira que todo mundo odeie o iptables.
Passei mais tempo tentando descobrir os erros do que deveria. Se eu tivesse passado tanto tempo tentando entender iptables
, provavelmente poderia ter traduzido as mport
regras para multiport
. Além disso, pensei em postar no SuperUser, no entanto, as poucas perguntas marcadas com iptables não estavam no mesmo nível das que estou lendo aqui no ServerFault.
Procurando módulos:
Eu entrei no roteador sem fio com tomato
firmware, encontrei o módulo libipt_mport.soem /usr/lib/iptables
. Mas no /lib/modules/2.4.20/kernel/net/ipv4/netfilter
diretório não existe libipt_mport.so, apenas ipt_multiport.o
.
Na caixa Debian (nova instalação do wheezy), usei updatedb
e locate
para pesquisar MASQ
(pelo objeto MASQUERADE) e descobri que o diretório/lib/modules/3.2.0-4-amd64/kernel/net/ipv4/netfilter
tem uma boa variedade de arquivos iptable_*
e nf_nat_*
ko
. 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, há algum outro problema abaixo? Vejo o material da camada 7 e tenho a sensação de que isso causará mais complicações a seguir.
Arquivo de configuração do Tomato:
Notas:
» 99.1.81.209 é o ip WAN
» 10.0.0.2 é o ip para este firewall Debian
» 10.0.0.20 é um servidor
» interface pública do tomate vlan0
alterada para eth0
» interface interna do tomate br0
alterada para eth1
» portas 5060:5090 são para VoIP (provavelmente não não precisa de toda essa 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
Responder1
AFAIK, os parâmetros do multiport
módulo são idênticos aos parâmetros do mport
módulo que você mostrou.
Experimente uma simples pesquisa e substituição:
s/-m mport/-m multiport/g
PS: Certamente nãotodosodeia iptables; Eu pessoalmenteAMORiptables ;-)