Copiando a configuração do iptables do Tomato para o servidor Debian

1

Estou substituindo um roteador sem fio que executa o Tomato por um servidor Ubuntu com dois NICs. Eu ssh'd no roteador tomato e encontrei o / etc / iptables lá e todas as regras fazem sentido com base no que estou lendo. Provavelmente usarei o webmin quando o servidor estiver configurado e em execução. (como estou escrevendo esta questão, eu já estou copiando os arquivos qos e dnsmasq settings)

A configuração do iptables é realmente tão fácil quanto mudar os nomes das interfaces e salvar o mesmo arquivo no servidor Debian?

Tomate: vlan1 (público), br0 (com fio privado) e eth1 (sem fio privado)
Ubuntu: eth0 (public) e eth1 (private).

O arquivo de configuração do tomate com os nomes das interfaces foi alterado:

*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.165.243.155 -j DNAT --to-destination 10.0.0.2
-A PREROUTING  -p tcp -m tcp -d 99.165.243.155 --dport 22 -j DNAT --to-destination 10.0.0.2:22
-A PREROUTING -p tcp  -d 99.165.243.155 --dport 8822 -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.165.243.155
:upnp - [0:0]
-A PREROUTING -d 99.165.243.155 -j upnp
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i eth1 -d 99.165.243.155 -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

Editado para adicionar: Eu também tenho lido desses dois grandes recursos: link
link

Editado para adicionar:
1. Acabou mudando para o Debian. O Ubuntu 12.04 LTS estava exigindo muitos hacks para trabalhar no meu hardware .
2. iptables não reconhece o módulo mport , mas pergunta diferente .

    
por Chris K 12.01.2014 / 05:55

1 resposta

3

Sim ... é tão simples quanto copiar / colar & ajustar nomes de interface conforme apropriado. Iptables no tomato, é o mesmo que o iptables no ubuntu / debian / centos / red hat / suse / dsl / openwrt / ddwrt / filhote / etc ... O único potencial conflito entre sabores de sistemas operacionais ... é se o iptables é específico ou não módulos foram compilados / instalados.

A configuração que você postou acima é gerada por iptables-save e deve ser lida por iptables-restore . Ele é NÃO lido por padrão na maioria dos linux-flavors ... então você pode precisar criar um script de inicialização para restaurar as configurações na inicialização.

No Ubuntu, você pode simplesmente editar o /etc/rc.local e adicionar isto:

sudo iptables-restore < /etc/iptables

O único módulo instalado não-padrão que você está usando é o módulo "layer7" ... mas é fácil de instalar no ubuntu. Basta fazer um

sudo apt-get install l7-filter-userspace l7-protocols

e pronto.

    
por 12.01.2014 / 06:43

Tags