- 求职 : Linux运维
- 论坛徽章:
- 203
|
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
复制代码 |
|