您可能阻止了 DNS 查询;它最终会超时。尝试使用 ipchains 的 `-n' (数字) 标志,它会禁止名称查找。
您必须将 `!' 选项单独放置,两侧留有空格。一个经典的错误(在 1.3.10 中警告过)是
# ipchains -A input -i !eth0 -j DENY
#
永远不会有名为 `!eth0' 的接口,但 ipchains 不知道这一点。
确保数据包转发已启用(在最近的内核中,默认情况下它是禁用的,这意味着数据包甚至不会尝试遍历 `forward' 链)。您可以(以 root 身份)通过键入以下命令来覆盖此设置
# echo 1 > /proc/sys/net/ipv4/ip_forward
#
如果这对您有效,您可以将其放在启动脚本中的某个位置,以便每次都启用它;不过,您需要在运行此命令之前设置防火墙,否则数据包有机会溜过。
您必须允许转发数据包(见上文)才能使重定向工作;否则路由代码会丢弃数据包。因此,如果您只是使用重定向,并且根本没有任何转发,则应该意识到这一点。
请注意,REDIR(位于 input 链中)不会影响来自本地进程的连接。
内核版本 2.1.102 和 2.1.103(以及我制作的一些旧补丁)中存在一个错误,该错误导致指定通配符接口(例如 -i ppp+
)的 ipchains 命令失败。
这在最近的内核和网站上的 2.0.34 补丁中已修复。您也可以通过手动更改内核源代码中 include/linux/ip_fw.h 中的第 63 行左右来修复它
#define IP_FW_F_MASK 0x002F /* All possible flag bits mask */
这应该读取 ``0x003F''。修复此问题并重新编译内核。
这是我的错误:在内核版本 2.1.102 到 2.1.111 中,设置服务类型字段实际上并未设置服务类型。此问题已在 2.1.112 中修复。
对于 2.0.x,这是真的;我没有时间为 ipchains 和 ipautofw/ipportfw 创建和维护一个巨型补丁。
对于 2.1.x,请从以下位置下载 Juan Ciarlante 的 ipmasqadm
<url url="http://juanjox.linuxhq.com/" name="http://juanjox.linuxhq.com/">并像使用
ipautofw
或 ipportfw
一样使用它,除了将 ipportfw
替换为 ipmasqadm portfw
,并将 ipautofw
替换为 ipmasqadm autofw
。
升级到 1.6.0 或更高版本,对于 2.1.x 内核,它根本不需要任何防火墙规则。这似乎在 1.6.1 版本中再次损坏;请向作者报告错误(这不是我的错!)。
这是 ipchains 1.3.3 版本中的一个错误。请升级。
确实如此(对于 2.1.x 内核)直到 2.1.123。在 2.1.124 中,尝试设置地址伪装超时会导致内核锁死(将 net/ipv4/ip_fw.c 的第 1328 行的 return
更改为 ret =
)。在 2.1.125 中,它可以正常工作。
似乎其他人也想这样做。不幸的是,我的代码仅涵盖 IP。好的一面是,所有钩子都已准备就绪,可以防火墙 IPX!您只需要编写代码;我将很乐意尽可能提供帮助。