再次强调,您需要做的第一件事是确保您的内核在构建时启用了网络防火墙支持和防火墙功能。在 2.2.14 内核版本中,您需要确保您对以下问题回答了是对于以下问题
Networking options: Network firewalls (CONFIG_FIREFALL) [N] Y IP:Firewalling (CONFIG_IP_FIREWALL) [N] Y IP:TCP syncookie support (CONFIG_SYN_COOKIES) [N] Y |
: 如果您遵循了 Linux 内核部分并重新编译了您的内核,则上面显示的选项网络防火墙、IP:防火墙和 IP:TCP 同步 Cookie 支持已经设置。
IP 伪装和 IP ICMP 伪装仅网关服务器需要。
IP:Masquerading (CONFIG_IP_MASQUERADE) [N] Y IP:ICMP Masquerading (CONFIG_IP_MASQUERADE_ICMP) [N] Y |
: 只有您的网关服务器需要启用 IP:伪装和 IP:ICMP 伪装内核选项。 这是将您的内部网络伪装到外部所必需的。
伪装意味着如果您的本地网络上的计算机(您的 Linux 机器(或网关)充当防火墙)想要向外部发送内容,您的机器可以伪装成那台计算机。换句话说,它将流量转发到预期的外部目的地,但使其看起来像是来自防火墙本身。
它是双向工作的:如果外部主机回复,Linux 防火墙将静默地将流量转发到相应的本地计算机。这样,您本地网络上的计算机对于外部世界是完全不可见的,即使它们可以访问外部并可以接收回复。这使得本地网络上的计算机即使没有正式注册的 IP 地址也可以参与 Internet。
IP 伪装代码只有在您的系统上启用 IP 转发时才能工作。此功能默认情况下处于禁用状态,您可以使用以下命令启用它
在
[root@deep] /#echo 1 > /proc/sys/net/ipv4/ip_forward |
FORWARD_IPV4="false" |
FORWARD_IPV4="yes" |
您必须重启您的网络才能使更改生效
[root@deep] /# /etc/rc.d/init.d/network restart |
Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ] |
在
# Enable packet forwarding net.ipv4.ip_forward = 1 |
要在您的系统上手动重启所有网络设备,请使用以下命令
[root@deep] /# /etc/rc.d/init.d/network restart |
Setting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ] |
: 只有当您对内核选项 IP:伪装 (CONFIG_IP_MASQUERADE) 回答是并选择让服务器充当网关并为您的内部网络伪装时,才需要上面的 IP 转发行。
如果您启用了 IP 伪装,那么模块ip_masq_ftp.o用于 ftp 文件传输,ip_masq_irc.o用于 irc 聊天,ip_masq_quake.o 你猜对了!, ip_masq_vdolive.o用于 VDOLive 视频连接,ip_masq_cuseeme.o用于 CU-SeeMe 广播和ip_masq_raudio.o用于 RealAudio 下载将自动编译。 它们是使这些协议的伪装工作所必需的。
另外,不要忘记您需要构建模块化内核并对启用可加载模块支持 (CONFIG_MODULES) 选项回答是而不是单内核,以便能够在您的网关服务器上使用伪装功能和模块,例如ip_masq_ftp.o有关更多信息,请参阅本书前面 Linux 内核部分。
为 IP: 伪装描述的基本伪装代码仅处理 TCP 或 UDP 数据包以及现有连接的 ICMP 错误。IP:ICMP 伪装选项增加了对伪装 ICMP 数据包的额外支持,例如 ping 或 Windows 95™ tracer 程序使用的探测。
请记住,其他服务器(如 Web 服务器 和 邮件服务器 示例)不需要启用这些选项,因为它们要么分配了真实的 IP 地址,要么不充当内部网络的网关。