Chinaunix

标题: 两台linux服务器互联问题 [打印本页]

作者: sauer    时间: 2016-08-05 09:27
标题: 两台linux服务器互联问题
两台linux服务器A和B,各有两个网卡分别连上网线
A1----------B1 172.16.100.0/24
A2----------B2 192.168.100.0/24

A1和B1是172.16.100网段,A2和B2是192.168.100网段,
两台linux都已经设置了ip转发
请教B1怎么才能ping通A2,谢谢!
作者: Riet    时间: 2016-08-05 11:05
中间加路由设备 或者你B1 B2其中一台有两个网卡
作者: sauer    时间: 2016-08-05 11:12
Riet 发表于 2016-08-05 11:05
中间加路由设备 或者你B1 B2其中一台有两个网卡


不明白,linux本身不是有路由功能么
作者: jixuuse    时间: 2016-08-05 12:35
子网不一样,你先看看网络基础吧

不同子网间通信需要三层设备进行转发
作者: Riet    时间: 2016-08-05 13:50
回复 3# sauer

或者你B1 B2其中一台有两个网卡
   
作者: lyhabc    时间: 2016-08-05 22:39
Linux添加永久静态路由

实际上route命令就是控制路由器的优先级,优先级如下

直连(两个机器通过一根网线直接连接)-》静态路由(修改路由表)-》动态路由

直连我就不叙述了,一根网线只有一条路径,route命令控制的是静态路由修改机器的路由表

实现Windows和Linux主机之间不同网段通信


大家知道不同网段的两台机器是不能通信的,其实我们可以通过路由规则的方法让两台机器通信
如果两台机器都是真实机,我们只需要使用直连线,中间不经过任何交换机路由器就可以通信
如果两台真实机都连着交换机,那么就需要多买一个网卡(两台机器双网卡),一个网卡连交换机,一个网卡直接连接
示意图


图中两个机器都只有一个网卡,通过网线直接相连

然后在Windows和Linux各自添加一条路由规则

Windows  192.168.1.100
route add -p 192.168.0.0 mask 255.255.255.0  192.168.0.106 IF 12   //Windows添加




在cmd下执行上面命令
IF:网卡接口编号,可以通过route print查看
-p :表示添加永久路由


Linux  192.168.0.106
route add -net 192.168.1.0 netmask 255.255.255.0  dev eth0  //Linux添加





dev:为网卡设备,这里是 eth0

添加完毕之后,Windows和Linux都可以互相ping通

上面的命令,Windows添加的是永久路由,而Linux只是暂时路由,重启机器或重启网络服务,路由规则就会消失
这时候需要在Linux添加永久路由

在/etc/sysconfig/  路径下新建一个static-routes 文件
添加一行
any net 192.168.1.0/24  dev eth0
# cat /etc/sysconfig/static-routes
any net 192.168.1.0/24 dev eth0




然后重启网络服务:service network restart


这时候,无论在Linux里重启机器或重启网络服务,路由规则都不会消失虚拟机跟真实机的做法都是一样的,并没有差异
这样,即使虚拟机跟真实机的网段不一样,我们照样可以ssh我们的Linux虚拟机


原理
附:在linux下设置永久路由的方法:

1.在/etc/rc.local里添加 方法,这种方法重启网络服务之后就会失效

route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.2.254


2.在/etc/sysconfig/network里添加到末尾  ,这种方法只能添加默认网关
方法:

GATEWAY=gw-ip或者 GATEWAY=gw-dev



3./etc/sysconfig/static-routes : (没有static-routes的话就手动建立一个这样的文件)

any net 192.168.3.0/24 gw 192.168.3.254
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129




4.开启 IP 转发:

# echo "1" >/proc/sys/net/ipv4/ip_forward (临时)

# vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久开启)



如果在rc.local中添加路由会造成NFS无法自动挂载问题,所以使用static-routes的方法是最好的。无论重启系统和service network restart 都会生效
按照linux启动的顺序,rc.local里面的内容是在linux所有服务都启动完毕,最后才被执行的,也就是说,这里面的内容是在netfs(NFS)之后才被执行的,

那也就是说在netfs(NFS)启动的时候,服务器上的静态路由是没有被添加的,所以netfs(NFS)挂载不能成功。
static-routes文件又是什么呢,这个是network脚本执行时调用的一个文件,这个文件的放置在/etc/sysconfig目录下,在network脚本中的位置是

复制代码
/etc/init.d/network:
    159         # Add non interface-specific static-routes.
    160         if [ -f /etc/sysconfig/static-routes ]; then
    161            grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
    162               /sbin/route add -$args
    163            done
    164         fi
复制代码




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2