一、前言:
还是为了搭建strongswan环境,为了配置net-net等模式,需要两个网关。
而且网关还有很多用途。比如不用路由器共享上网。最经典的就是一台电脑如果有蓝牙,可以连入互联网,再通过蓝牙共享,这样其他人就可以无线上网了(这么听说过,没实践)。
做网关,当然要有两个网卡用于转发。自己的机子上没有,而Vmware中网卡个数可以随意增删,因此便用它来实现。
二、环境:
Vmware宿主环境:Windows XP SP3,没办法,还是Win下操作的方便,比如弄个注册机什么的。。。
一台宿主机的Vmware上开了两个系统(两个网关),其余的主机与宿主机通过交换机或路由器连在一起(只要保证物理上能通就行)。
虚拟机中环境:Ubuntu10.10
拓扑结构:
其中sun和moon主机自然是网关。
只要保证sun的一个网卡和moon的一个网卡IP处在同一网段中,sun_net和sun的另一网卡IP处在同一网段中,moon_net和moon的另一网卡IP处在同一网段中即可。
要实现的就是:sun_net中的主机通过sun和moon能与不在同一网段的moon_net中的主机实现通信。
建议:操作前先相互ping一下,看看该通的地方通不通。偶就是以为一台电脑有间歇性的“网络不通”症,白白浪费一天时间。
宿主机的IP无需配置,但要保证是连在这个网络中的。
三、操作步骤
1、建虚拟机,配置双网卡
配置-add,加块网卡就OK了。设置为桥接模式。注意Vmware需要的服务启动方式如果有设置的话,确保需要的服务都启动了。
2、配置IP
命令:sudo gedit /etc/network/interfaces
当然也可通过ifconfig等命令实现,但那样重启无效。
以下是各主机上配置的/etc/network/interfaces文件:
moon:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.16 . 1.13
gateway 172.16 . 1.12 # 这里网关设为sun与此相连的IP ,即拓扑图中B的IP
netmask 255.255 . 0.0
auto eth1
iface eth1 inet static
address 192.168 . 4.90
network 192.168 . 4.0
netmask 255.255 . 255.0
sun:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168 . 3.90
network 192.168 . 3.0
netmask 255.255 . 255.0
auto eth1
iface eth1 inet static
address 172.16 . 1.12
gateway 172.16 . 1.13 # 网关设置同上
netmask 255.255 . 0.0
moon_net中的主机:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168 . 4.99
gateway 192.168 . 4.90 # 网关设置为moon主机与此子网连通的那个IP ,即D的IP
netmask 255.255 . 255.0
sun_net中的主机:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168 . 3.99
gateway 192.168 . 3.90 # 网关设置方法同上
netmask 255.255 . 255.0
这里注意的就是网关的设置。B处的网关是C,C处的网关是B。sun_net的网关是A,moon_net中的网关是D。
重启网络:sudo /etc/init.d/networking restart
第2步完成。
B处的网关也可这样设置:
sudo route add default gw 172.16 . 1.13
同理C处的:
sudo route add default gw 172.16 . 1.12
其实就是设置缺省路由。缺省的路由是把所有的数据包都发往它的上一级网关。
后面设置成功后如果无法通,可以用route命令查看一下,如果默认路由没有的话就用这两条命令设置一下。
3、设置转发
第2步完成后sun_net与moon_net还是不通的,原因就是未设置转发。
在网关moon和sun中设置:
在 /etc/sysctl.conf 文件中,设置 net.ipv4.ip_forward = 1 ,开启 IP 包转发功能,然后执行 sysctl -p 让参数生效。这样moon和sun就可以在它们的两个网卡之间转发数据包了。
四、测试
端口两两之间ping一下,如果配置正确,应该都能通。不通则检查下IP和路由表,一般是那的问题。