也许大家都知道路由器有路由功能,或者三层交换机有路由功能。但很少有人知道,其实我们的主机同样有路由功能,可以作为一个简易路由器使用,只不过默认没有开启。无论在Windows或者Linux平台下都是可以的,现在就来看看Linux下静态路由的配置。
先来看一个简单的拓扑
需求很简单,只要RHEL-A可以ping通RHEL-C就可以了。
首先开启RHEL-B服务器的路由转发功能,即将/proc/sys/net/ipv4/ip_forward文件的值从0改成1。0代表关闭路由功能,1代表开启。(用echo修改,最好不要用vi来编辑)
echo 1 > /proc/sys/net/ipv4/ip_forward
如果需要开机启动路由功能,则需要修改/etc/sysctl.conf文件
vi /etc/sysctl.conf
有关静态路由的命令
route add –net 添加一条默认路由,目标为对方网段
route add –host 添加一条默认路由,目标为对方主机
route add default gw 设定默认网关
route delete 删除路由
配置RHEL-A的静态路由,网关指向RHEL-B的eth0接口
route add –net 192.168.20.0 netmask 255.255.255.0 gw 192.168.10.20
配置RHEL-C的静态路由,网关指向RHEL-B的eth1接口
route add –net 192.168.10.0 netmask 255.255.255.0 gw 192.168.20.20
这个时候使用RHEL-A去ping 192.168.20.1和用RHEL-C去ping 192.168.10.1都是可以成功的。
我们来看看RHEL-A和RHEL-C的路由表,查看路由表的命令是route -n
RHEL-A
发现多了一条192.168.20.0网段的路由,下一跳指向192.168.10.20,UG就代表下一跳指向网关(Gateway),出接口为eth0。
RHEL-C
**************************************************************************************
另外在静态路由配置中,还可以以出接口为下一跳。以上面为例
RHEL-A
route add –net 192.168.20.0 netmask 255.255.255.0 dev eth0
RHEL-C
route add –net 192.168.10.0 netmask 255.255.255.0 dev eth0
不过不建议这么做,因为在以太网接口中,出接口并非为匹配固定的下一跳,会造成ARP条目过多,可能导致无法通信的情况。