将 iptables 配置从 Tomato 复制到 Debian 服务器

将 iptables 配置从 Tomato 复制到 Debian 服务器

我正在用具有双 NIC 的 ubuntu 服务器替换运行 Tomato 的无线路由器。我通过 ssh 进入了 Tomato 路由器,发现/etc/iptables那里的所有规则都符合我所读到的内容。服务器设置并运行后,我可能会使用 webmin。(在我写这个问题时,我已经在复制qosdnsmasq设置文件了)

设置 iptables 真的像更改接口名称并将相同的文件保存到 Debian 服务器上一样简单吗?

Tomato:(vlan1公共)、br0(私人有线)和eth1(私人无线)
Ubuntu:(eth0公共)和eth1(私人)。

接口名称已更改的 Tomato 配置文件:

*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

编辑后添加:我也一直在阅读这两个很好的资源:
http://oceanpark.com/notes/firewall_example.html
http://www.novell.com/coolsolutions/feature/18139.html


编辑后添加:
1. 最终改用 Debian。Ubuntu 12.04 LTS 需要太多的 hack 才能在我的电脑上运行硬件.
2.iptables无法识别mport模块,但这是另一个问题

答案1

是的... 这就像复制/粘贴并根据需要调整接口名称一样简单。tomato 上的 iptables 与 ubuntu/debian/centos/red hat/suse/dsl/openwrt/ddwrt/puppy/etc 上的 iptables 相同... 不同操作系统之间唯一可能存在的冲突是是否编译/安装了特定的 iptables 模块。

您在上面发布的配置是由 生成的iptables-save,应该由 读取 iptables-restore。它是不是在大多数 Linux 版本上默认读取...所以您可能需要创建一个初始化脚本来在启动时恢复设置。

在 Ubuntu 上,您只需编辑 /etc/rc.local 并添加以下内容:

sudo iptables-restore < /etc/iptables

我看到您使用的唯一非标准安装模块是“layer7”模块……但它在 ubuntu 中安装起来很容易。只需执行

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

您就完成了。

相关内容