https://help.ubuntu.com/community/Router/Firewall
上面的链接描述了一个防火墙脚本。如何在 Ubuntu 10.0.4 桌面中安装此脚本?
答案1
“高级”防火墙脚本是一个 shell 脚本,应该在内部和外部接口都启动后执行。
首先,将脚本放在某个地方,例如/etc/init.d/local/my_firewall_script
,使其可执行,并#!/bin/sh
作为脚本文件的第一行添加。
接下来,您需要安排脚本在两个接口启动后运行。您有两个选择:
通过 upstart。这是我的偏好,因为脚本必须在两个接口都启动时运行。创建一个
/etc/init/my_firewall.conf
包含以下内容的文件:description "My firewall script" start on (net-device-up IFACE=br0 and net-device-up IFACE=eth0) console output pre-start exec /etc/init.d/local/my_firewall_script
这完全没有经过测试,而且我没有任何经验,所以你可能需要调整这个文件。此外还有一个与 net-device-up 事件相关的错误这可能会影响到你。
通过 ifup 脚本。这里有点麻烦,因为第二个接口启动时必须运行脚本。创建一个
/etc/network/if-up.d/my_firewall
包含以下内容的文件(未经测试):#!/bin/sh if [ "$IFACE" = "br0" ] || [ "$IFACE" = "eth0" ]; then if [ -n "$(ip addr show br0 | grep '^ *inet ')" ] 2>/dev/null && [ -n "$(ip addr show eth0 | grep '^ *inet ')" ] 2>/dev/null; then /etc/init.d/local/my_firewall_script fi fi
如果只有一个接口,或者可以保证其中一个接口总是在另一个接口之后出现,则此方法将更简单且更受欢迎:脚本将是(假设单个或最后一个接口是
eth0
):#!/bin/sh if [ "$IFACE" = "et0" ]; then /etc/init.d/local/my_firewall_script fi
请注意,此处给出的脚本非常特定于特定设置 — 它是一个相对高级脚本的示例。您必须使其适应您的设置,至少是 IP 地址范围,可能还有接口名称。
在您找到可行的方法后,我建议您在 wiki 页面上写下您如何操作的描述。
答案2
这里有一些全面的文档,其中提供了几个您可以选择的选项:
答案3
您可以将脚本保存为例如/etc/iptables.up.rules
并添加:
post-up iptables-restore < /etc/iptables.up.rules
到/etc/network/interfaces
你的接口定义文件下。