既然您的用户已经可以访问系统,我们需要确保他们可以访问网络。我们通过使用 Linux 内核的防火墙规则和路由表来实现这一点。使用 route 和 ipfwadm 命令,我们可以设置内核以适当的方式处理网络流量。有关 ipfwadm、ipchains 和 route 的更多信息,请参阅 Linux Networking HOWTO。
为了使所有这些工作正常进行,您必须正确配置内核。如果您不知道如何构建自己的内核,那么您应该阅读 Kernel HOWTO。除了基本网络之外,您还需要确保启用以下内核选项。我的系统中使用的是 2.0.38 内核。
对于 2.0 内核
CONFIG_FIREWALL
CONFIG_IP_FORWARD
CONFIG_IP_FIREWALL
CONFIG_IP_ROUTER
CONFIG_IP_MASQUERADE (可选)
CONFIG_IP_MASQUERADE_ICMP (可选)
CONFIG_PPP
对于 2.2 内核
CONFIG_FIREWALL
CONFIG_IP_ADVANCED_ROUTER
CONFIG_IP_FIREWALL
CONFIG_IP_ROUTER
CONFIG_IP_MASQUERADE (可选)
CONFIG_IP_MASQUERADE_ICMP (可选)
CONFIG_PPP
要使用 ipfwadm 设置规则,请使用类似于以下的选项运行它
# /sbin/ipfwadm -F -f # /sbin/ipfwadm -F -p deny # /sbin/ipfwadm -F -a accept -S 192.168.13.0/24 -D 172.16.0.0/12 |
要使用 ipchains 设置规则,请使用类似于以下的选项运行它
# /sbin/ipchains -F forward # /sbin/ipchains -P forward DENY # /sbin/ipchains -A forward -j ACCEPT -s 192.168.13.0/24 -d 172.16.0.0/12 |
Assuming that 172.16.254.254 is the internal gateway: # /sbin/route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.16.254.254 dev eth1 # /sbin/route add -net 172.16.0.0 netmask 255.240.0.0 gw 172.16.254.254 dev eth1 # /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 172.16.254.254 dev eth1 |