环境:防火墙作为网关,下设两个网段,A网段为192.168.0.0/24,防火墙上的网关地址为192.168.0.1,有一服务器地址为192.168.0.2;B网段为192.168.2.0/24,防火墙上的网关地址为192.168.2.1,有一客户机地址为192.168.2.5,只有一块网卡,需要增设一个ip,连接A网段服务器上的nfs服务。服务器和客户机操作系统均为ubuntu 7.04。
nfs服务器比较好架,apt安装nfs-kernel-server及相关包即可,默认服务端口2049不动,配置文件/etc/exports的内容为:
/home/fwolf 192.168.0.5(rw,sync,subtree_check)
/home/share *(ro,subtree_check)
不要装成了nfs-user-server,那个是nfs v2,不是nfs v3,不支持4G以上的文件。限制了/home/fwolf只有主机192.168.0.5才能访问。客户端可以收工mountnfs服务器:
sudo mount -t nfs svrname:/home/fwolf local_mount_point
也可以写到fstab中:
svrname:/home/fwolf local_mount_point nfs defaults 0 0
如果现在用B网段的客户机访问A网段的服务器,因为路由走的是防火墙(防火墙的配置好像也有点问题,不过改不了,不行的根源可能就在于此),防火墙上看到客户机的地址是防火墙上配置的另外一个C网段地址,所以要给客户机增加一个A网段的ip,不通过防火墙直接访问。
单网卡增加双ip要用到别名,所以/etc/network/interfaces文件的内容如下:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.2.5
netmask 255.255.255.0
auto eth0:0
iface eth0:0 inet static
address 192.168.0.5
netmask 255.255.255.0
两个地址都不设置gateway,然后在rc.local中添加静态路由设置:
route add -net 192.168.0.0/24 gw 192.168.0.1 dev eth0:0
route add default gw 192.168.2.1 dev eth0
然后重启网络并执行rc.local:
sudo /etc/init.d/networking restart; sudo /etc/rc.local
现在,看一下路由表:
$ route
Kernel IP routeing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 192.168.0.1 255.255.255.0 UG 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.2.1 0.0.0.0 UG 0 0 0 eth0
按照设想,如果从客户机上访问A网段,那么应该对应路由表的第一行,使用网关192.168.0.1,服务器上看到的地址自然就是192.168.0.5,如果访问其他网段,应该走默认网关192.168.2.1,对应本机ip地址192.168.2.5。但是,我的实践证明并不是这样,甚至在rc.local加上了下面几句中任何一句或者全部也不行:
route add -net 192.168.0.0/24 dev eth0:0
route add -host 192.168.0.2 dev eth0:0
route add -host 192.168.0.2 gw 192.168.0.1 dev eth0:0
偶尔的时候,能够成功,但是感觉不稳定,所以算是失败了,感觉有3种可能:
- 防火墙工作方式问题,这个自然没法改动了
- 路由命令添加得不对,我觉得应该没错误吧
- 此路根本不通,单网卡不能设多ip,只能用多网卡,我觉得这个不太可能
暂时的,只能放宽nfs地址限制,或者用速度较慢(尤其在局域网内)的sshfs来实现了。
参考
- [ubuntu系统更改网卡mac地址及安装双网卡(双IP)的方法](http://blog.csdn.net/rehung/archive/2007/09/20/1793063.aspx)
- [网络文件系统—NFS](http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE:%E7%BD%91%E7%BB%9C%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F_nfs)
linux实现共享上网 http://mineral.javaeye.com/blog/133141 上面这个链接有单网卡双ip的设置方法,供参考。
谢谢,不过我双ip设置成功了,主要是卡壳在路由设置上, 和我的防火墙有有一定关系。