在Linux上实现单臂路由器功能
找一块3COM等的网卡(支持VLAN的即可),在内核中打上VLAN的补丁,确认你需要几个网段,从而设置几个IP地址,同时再设置几个MAC地址。(LINUX中是可以自己改MAC地址的)。将你的LINUX机器真正模拟成一台路由器,这样的效果更好,应用场合也更广。举例说明:你有A、B、C、D 四台设备,其中A、B是桌面PC,C是一台路由器(是你的内部网络的网关),D是一台上面所说的LINUX。你公司要求内外网隔离,在A、B上有一个内外网物理隔离切换器(简单的讲,有一个开关,开是物理跟外网连通,关时跟内网连通)。这种应用下,A、B的网关是固定的,那我们就要求LINUX的IP跟C路由器的IP应该一一对应,同时由于ARP表的关系,我们还得要求LINUX的MAC地址也应该跟C路由器的MAC一一对应,否则A、B机器切换网络时会有一段时间是不通的(等待ARP表老化)。不知大家明白了没有,其实好处还有很多,下此我有空在跟大家将详细的实施步骤及原理详细写出来:
对一个稍大一点的网络而言,存在着多个IP网段,同时有的网络还要求内外网隔离。下面我将怎样在一台LINUX上模拟一台路由器的步骤简述如下,给有这种需求的弟兄一个参考。
我的描述环境为:Redhat 7.2 (2.4.7-10),3com 3c509网卡。
1.安装Redhat 7.2版本,其中的kernel为linux-2.4.7-10
2.下载vlan软件包,对应linux-2.4.7-10的为vlan1.3.tar.gz
3.在/usr/src目录下解开vlan软件包
4.proc /usr/src/vlan 将vlan加入到Linux kernel中
5.cd /usr/src/linux-2.4.7-10配置kernel的模块make menuconfig
6.进入network configuration 选择dot1q支持,保存退出。
7.编译kernel , make dep;make clean;make bzImage;make modules;make modules-install
8.cp /usr/src/linux-2.4.7-10/.../boot/bzImage /boot/vmlinuz-2.4.7-10, cp /usr/src/linux-2.4.7-10/.../system /boot/system-2.4.7-10
9.重起Linux,启动时看到dot1q support by ben greear, vlan 已经启动
10.cd /usr/src/vlan 编译vconfig文件,make ,如果退出,检查一下vconfig.c中调用文件的位置。
11.将vconfig可执行文件拷贝到 /usr/sbin, cp /usr/src/vlan/vconfig /usr/sbin/vconfig 。
12.配置vlan设备,以eth0为例,vconfig eth0 2;vconfig eth0 3,在主端口上配置vlan 1 的ip地址。
13.在vlan设备上设置ip地址。Ifconfig eth0.2 ipaddress netmask mask
14.在vlan设备上设置MAC地址。Ifconfig eth0.2 MACaddress(ifconfig用法请用ifconfig --help来查看)。
15.将路由器上和Linux相连的端口配置成trunk,以cisco 3548为例 interface fastethernet 0/48 switchport trunk encapulation dot1q
16.将Redhat 默认关闭的ip forwarding功能打开。echo "1">/proc/sys/net/ipv4/ip_forward
17.测试同vlan的设备和Linux路由器子端口互访,测试不同vlan中设备通过Linux路由器互访。以上都是我的实际操作经验,请COPY前打上LINUXSIR的标签即可。