在linux-2.2.x上,一般采用ipchains配置防火墙。到了linux-2.4.x,ipchains被功能更强大的iptables取代。目前最新版本为iptables-1.2.8。在编译kernel时,应加入iptables支持(linux-2.4.x kernel中依然有ipchains支持)下面以iptables-1.2.7a为例说明防火墙的配置。关于iptables的使用/原理清浏览:
http://www.netfilter.org/document.tion/ 对于单网卡要实现网关,必须让网卡有两个ip-一个内部ip,一个外部ip,其实也就是虚拟出一个网卡来。 <1>如何设置单网卡多ip? 在/etc/sysconfig/network-scripts下,我们会看到ifcfg-eth0这样的文件,通常网卡0对应ifcfg-eth0,网卡1对应ifcfg-eth1,以此类推。对于只有一个网卡的系统,则只有ifcfg-eth0这个文件了。 创建/etc/sysconfig/net-work-scripts/ifcfg-eth0:0,其内容可如下: DEVICE=eth0:0 /*该处指定了虚拟的网卡设备名,必须和它所在的文件的文件名一致*/ USERCTL=no ONBOOT=yes /*启动时生效*/ BOOTPROTO= BROADCAST=192.168.2.255 NETWORK=192.168.2.0 NETMASK=255.255.255.0 IPADDR=192.168.2.1 /*该网卡的内部网地址*/ 重启之后,我们就能看到两个网卡了:eth0和eth0:0。如果还要增加多个ip,则类似创建ifcfg-eth0:x,最多可有255个ip.当然啦,如果要载网卡1上设多个ip,则应该创建ifcfg-eth1:x。 现在,我们的系统已经具备了作路由器/网关的条件了---两个网卡。 假设,内网为192.168.2.0,外部网路为10.63.18.0,外部网关为10.63.18.1。 <2> 参考ifcfg-eth0:0修改ifcfg-eth0,指定其ip和netmask等: DEVICE=eth0 ONBOOT=yes #BOOTPROTO=dhcp IPADDR=10.63.18.97 /*在外部网络中的ip*/ NETWORK=10.63.18.0 NETMASK=255.255.255.0 BROADCAST=10.63.18.255 /*在命令行中设定ip/route add -net等应该也可以*/ <3> 修改/etc/sysconfig/network如下: NETWORKING=yes FORWARD_IPV4=yes /*必须*/ HOSTNAME=server GATEWAY=10.63.18.1 GATEWAYDEV=eth0 /*指定默认网关和设备,配置eth0*/ #外部网关为10.63.18.1 <4> 配置iptables,可建立sh文件route-cfg.sh如下: #!/bin/sh echo 1 > /proc/sys/net/ipv4/ip_forward /*千万别漏了这一句*/ modprobe iptable_nat modprobe ip_conntrack modprobe ip_conntrack_ftp iptables -F INPUT iptables -F FORWARD iptables -F POSTROUTING -t nat iptables -t nat -F iptables -P FORWARD DROP iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -j SNAT --to 10.63.18.97 重启计算机,运行route-cfg.sh(或者将其加入到/etc/rc.d/rc.local自动启动),设定内部网其他计算机的默认网关设为192.168.2.1。 前面的<1>-<3>步也可以用命令行方式来实现: #ifconfig eth0…….. #ifconfig eth0:0 ……. <5>MAC和IP的绑定 为了安全起见,防止到用ip,应该邦定ip&mac。方法如下: 建立/etc/ethers文件,其中包含正确的IP/MAC对应关系,格式如下: 192.168.2.32 08:00:4E:B0:24:47 然后在/etc/rc.d/rc.local最后添加: arp –f
|