在mini2440上搭建NAT服务器
一、绑定两个IP
首先仍然是想办法给一个网上绑定两个IP,一个外网IP:202.117.132.132,一个留作内部网关的内网IP:192.168.1.2,
开发板上修改IP使用的命令格式如下:
ifconfig eth0 202.117.132.132 netmask 255.255.0.0 route add default gw 202.117.132.1
定义DNS则要使用vi编辑器编辑/etc/resolv.conf文件修改为nameserver 202.117.128.2
同理绑定内网IP使用的命令为:
ifconfig eth0:0 192.168.1.2 netmask 255.255.0.0
但这种方法有很大的局限性,重启开发板后要重新输入命令。通过对开发板目录结构的研究,找到了启动脚本(/etc/init.d/rcS)。
启动流程大致如下:首先定义了环境变量PATH,定义运行级别为超级用户,紧接着设置默认的权限umask,下面是挂载proc文件系统,sysfs,usbfs等文件系统,以及挂载/dev下所有的设备,构建/var目录,再下面是在屏幕上输出一些初始化的信息,再下面是设置回环设备,初始化eth0接口。而初始化eth0实际上是调用了/etc/init.d/ifconfig-eth0脚本,这个脚本首先判断/etc/eth0-setting文件是否存在,存在的话可以用source命令来重新执行初始化的文件,不存在的话则会调用ifconfig命令来给它绑定IP和子网掩码,最终我们可以去分析eth0-setting文件,这个文件里的选项则更加直观,有IP项,Mask项,Gateway项,DNS项,MAC项。
到这里我们已经知道了开发板的IP绑定方法,我们可以采用两种方法来绑定IP。
方法一:在rcS里调用ifconfig命令绑定IP。
方法二:我们依照调用流程,首先创建eth0:0-setting文件,设置好其各项,但不能绑定两个不同的MAC地址,所以去掉MAC地址这一项。紧接着将ifconfig-eth0拷贝一份,将所有的eh0改成eth0:0,再在rcS脚本里添加/etc/init.d/ifconfig-eth0:0。
设置好后,用source或”.”命令来重启这个初始化脚本,这时绑定两个IP大功告成。
二、添加过滤转发规则
要在开发板上搭建NAT服务器只需要在移植好iptables的基础上执行下面的命令:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -F -t nat
iptables -P FORWARD DROP
iptables -A FORWARD -s 192.168.1.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.1.0/24 -j SNAT --to 202.117.132.132
执行完后可以用iptables-save > iptables-script命令将所有的iptables规则重定向输出到一个脚本中,重启开发板后执行iptables-restore iptables-script命令加载这些规则。为了方便起见,我们将这条命令加到rcS初始化脚本中。