像这样简单的文档可能会出现很多问题,因为存在许多特殊情况。 大多数可能出现的问题都与内部和外部网络设备的配置有关。 我会尽力回复遇到问题的人,找出问题所在,并在此处添加链接,以便遇到特殊情况问题的人能够找到帮助。 如果您有任何问题,请随时通过 pramsey@refractions.net 与我联系。
ICQ 的某些部分可以通过地址伪装正常工作。 其他部分则完全无法正常工作。 然而,有一个 beta 质量的 ICQ 模块 正在开发中,它解决了一些(但不是全部)通过地址伪装运行 ICQ 的缺陷。 源代码发布包中的 README
文件描述了如何编译该模块。 一旦您编译并安装了它,请调用 /sbin/modprobe ip_masq_icq
。
首先,祝贺您逆势而行! 其次,Nelson Gibbs (ngibbs@pacbell.net) 带来了好消息,因为这些说明中的大多数对您都适用。 但是,需要注意一些重要的更改:
/etc/sysconfig/network-scripts/ifcfg-eth0
和 eth1
中,对于接口,添加 GATEWAY=xxx.xxx.xxx.xxx
语句(本地接口使用远程接口 IP 地址,远程接口使用服务提供商的网关 IP)。/etc/sysconfig/daemons/dhcpd
脚本将 ROUTE_DEVICE
列为 eth1
,而不是 eth0
。/etc/dhcpd.conf
需要为两个接口都添加 subnet 语句(我不太确定为什么,因为我添加了第二个语句:subnet 216.102.154.201 netmask 255.255.255.255 { },没有其他选项,DHCP 服务器在 eth0 和 eth1 以及回退上都进行监听和发送)。 如果仅列出一个 subnet,DHCP 服务器会报错。255.255.255.255
,Caldera 使用的 /etc/rc.d/init.d/dhcpd
脚本已经修复了这个问题。 务必 将脚本中所有对 eth0
的引用更改为 eth1
。小菜一碟! 但是,您需要有一个静态 IP 地址,这样简单的步骤才能奏效。 如果您有动态 IP 地址,您将需要一些额外的脚本来确保当地址更改时,您的 IP 地址会在端口转发命令中得到更新。
请记住,将外部端口转发到内部机器会使您的“内部”机器比以前更不“内部”,但这可以非常透明地完成,并且性能几乎没有下降。 Linux 内核中 IP 地址伪装代码的副作用之一是能够对到达网络层的包进行一些非常酷的操作,而 ipmasqadm
实用程序就是为了利用这一点而构建的。
由于某些原因,并非所有 Red Hat 和 Mandrake 变体都附带 ipmasqadm
,因此您可能需要从维护者的 网站 获取它 -- 那里有一个 RPM 可用,以及源代码。
一旦您有了 RPM,请安装它,然后将以下行添加到您的 /etc/rc.d/rc.local
文件中
/usr/sbin/ipmasqadm portfw -f /usr/sbin/ipmasqadm portfw -a -P tcp -L x.x.x.x 80 -R 192.168.1.x 80
第一个命令清除端口转发规则,第二个命令添加一个从外部接口的 80 端口到内部机器的 80 端口的转发。 请注意,外部静态 IP 地址位于 x.x.x.x 空间中,内部机器 IP 地址位于 192.168.1.x 空间中。
现在,对 80 端口的外部请求将透明地发送到内部机器的 80 端口。 请注意,您无法通过从您的内部机器之一 telnet 或连接到您的网关的 80 端口来测试这一点:端口转发器仅响应来自外部接口的请求。