也許大家都知道路由器有路由功能,或者三層交換機有路由功能。但很少有人知道,其實我們的主機同樣有路由功能,可以作為一個簡易路由器使用,只不過默認沒有開啟。無論在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 添加一條默認路由,www.linuxidc.com目標為對方網段
route add –host 添加一條默認路由,www.linuxidc.com目標為對方主機
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條目過多,可能導致無法通信的情況。