怎样在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的标签即可。