下一页 上一页 目录

6. 常见问题

6.1 ipchains -L 冻结!

您可能阻止了 DNS 查询;它最终会超时。尝试使用 ipchains 的 `-n' (数字) 标志,它会禁止名称查找。

6.2 反向不起作用!

您必须将 `!' 选项单独放置,两侧留有空格。一个经典的错误(在 1.3.10 中警告过)是

# ipchains -A input -i !eth0 -j DENY
#

永远不会有名为 `!eth0' 的接口,但 ipchains 不知道这一点。

6.3 地址伪装/转发不起作用!

确保数据包转发已启用(在最近的内核中,默认情况下它是禁用的,这意味着数据包甚至不会尝试遍历 `forward' 链)。您可以(以 root 身份)通过键入以下命令来覆盖此设置

# echo 1 > /proc/sys/net/ipv4/ip_forward
#

如果这对您有效,您可以将其放在启动脚本中的某个位置,以便每次都启用它;不过,您需要在运行此命令之前设置防火墙,否则数据包有机会溜过。

6.4 -j REDIR 不起作用!

您必须允许转发数据包(见上文)才能使重定向工作;否则路由代码会丢弃数据包。因此,如果您只是使用重定向,并且根本没有任何转发,则应该意识到这一点。

请注意,REDIR(位于 input 链中)不会影响来自本地进程的连接。

6.5 通配符接口不起作用!

内核版本 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''。修复此问题并重新编译内核。

6.6 TOS 不起作用!

这是我的错误:在内核版本 2.1.102 到 2.1.111 中,设置服务类型字段实际上并未设置服务类型。此问题已在 2.1.112 中修复。

6.7 ipautofw 和 ipportfw 不起作用!

对于 2.0.x,这是真的;我没有时间为 ipchains 和 ipautofw/ipportfw 创建和维护一个巨型补丁。

对于 2.1.x,请从以下位置下载 Juan Ciarlante 的 ipmasqadm

<url url="http://juanjox.linuxhq.com/"
        name="http://juanjox.linuxhq.com/">
并像使用 ipautofwipportfw 一样使用它,除了将 ipportfw 替换为 ipmasqadm portfw,并将 ipautofw 替换为 ipmasqadm autofw

6.8 xosview 已损坏!

升级到 1.6.0 或更高版本,对于 2.1.x 内核,它根本不需要任何防火墙规则。这似乎在 1.6.1 版本中再次损坏;请向作者报告错误(这不是我的错!)。

6.9 使用 `-j REDIRECT' 时出现段错误!

这是 ipchains 1.3.3 版本中的一个错误。请升级。

6.10 我无法设置地址伪装超时!

确实如此(对于 2.1.x 内核)直到 2.1.123。在 2.1.124 中,尝试设置地址伪装超时会导致内核锁死(将 net/ipv4/ip_fw.c 的第 1328 行的 return 更改为 ret =)。在 2.1.125 中,它可以正常工作。

6.11 我想防火墙 IPX!

似乎其他人也想这样做。不幸的是,我的代码仅涵盖 IP。好的一面是,所有钩子都已准备就绪,可以防火墙 IPX!您只需要编写代码;我将很乐意尽可能提供帮助。


下一页 上一页 目录