您的位置:首页 > 其它

如何设置另一网段的ip作为本机的网关

2013-05-10 15:04 357 查看
如何设置另一网段的ip作为本机的网关?

一般来说我们上网(wan)都需要isp给我们一个网关地址(无论我们的地址是静态的还是动态分配的),并且,一般的情况下,这个网关地址跟本地外网地址是同一个网段;然而,我遇到两种与此不同的情况

1。pppoe(adsl)上网,有时,本地分配到的外网地址是61.xxx.xxx.xxx,而网关是218.xxx.xxx.xxx,这里,由于是ppp协议,ppp协议里通道两端地址是可以不是同一网段的(因为在这里,没有网段的概念,os不需要做arp寻址,所有发往对端地址的数据直接从ppp网口发送)。

2。某些宽带提供商提供LAN(以太网)上网连接服务,分配给用户的地址是192.168.xxx.xxx掩码255.255.255.0,分配的网关地址是172.16.xxx.xxx;这个情况下,如果使用windows类os,只要在网络参数中填上上述参数,就可以上网了;如果使用unix
like os,如FreeBSD,如果把网关设为172.16.xxx.xxx,根本ping不出去,提示No
route
to
host,如果是linux,在把该地址设置为网关是系统直接报错SIOCADDRT:
Network is unreachable,不能做如此设置。

解决的方法很简单

route
add -host 172.16.xxx.xxx gw 192.168.xxx.xxx eth0

route add -net 0.0.0.0 gw 172.16.xxx.xxx eth0

(假设eth0是外网卡)

此方法的原理是

如果没有前一条路由设置,因为当route add -net 0.0.0.0 gw 172.16.xxx.xxx eth0

时,系统必须知道到达172.16.x.x的路由得到该地址对应的MAC,不然os无法通过路由表判断该从哪块网卡发送arp请求以获得网关的MAC,(至少系统中有eth0跟loopback两块网卡,这是SIOCADDRT: Network is unreachable的来源),虽然route
add -net 0.0.0.0 gw 172.16.xxx.xxx eth0中有指定eth0,然而这是在前述路由检查之后;这就如同上楼梯,必须一级一级连续的,其中断了一级就无法跨越了。加了第一条路由后,就把这个断层补上了。

应该指出的是,此时上级网关172.16.xxx.xxx(isp端)必须做类似的设置

route
add -net 192.168.xxx.xxx/24 gw 172.16.xxx.xxx eth1

保证有正确的返回路由;

此外,用户(192.168.xxx.xxx)和isp(172.16.xxx.xxx)之间的连接必须是集线器或且交换机这样的第二层设备,如果是路由器就需要做在路由器上arp proxy(保证arp寻址正常)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: