1、前言介紹:vim
IP地址分爲公有ip地址和私有ip地址,Public Address是由INIC(internet network information center)負責的,這些IP地址分配給了註冊並向INIC提出申請的組織機構。Private Address屬於非註冊地址,專門爲組織內部使用。Private Address是不可能直接用來跟WAN通訊的,要麼利用幀來通訊(FRE幀中繼,HDLC,PPP),要麼須要路由的轉發(nat)功能把私有地址轉換爲公有地址才行。
centos
出於安全考慮,Linux系統默認是禁止數據包轉發的。所謂轉發即當主機擁有多於一塊的網卡時,其中一塊收到數據包,根據數據包的目的ip地址將數據包發往本機另外一塊網卡,該網卡根據路由表繼續發送數據包。這一般是路由器所要實現的功能。安全
2、路由轉發的工做原理:
bash
首先內網主機向外網主機發送數據包,因爲內網主機與外網主機不在同一網段,因此數據包暫時發往內網默認網關GIP處理,而本網段的主機對此數據包不作任何迴應。因爲內網主機的SIP是私有的,禁止在公網使用,因此必須將數據包的SIP修改爲公網上的可用IP,這就是網關收到數據包以後首先要作的事情--IP地址轉換。而後網關再把數據包發往外網主機。外網主機收到數據包以後,只認爲這是網關發送的請求,並不知道內網主機的存在,更不知道源IP地址是SIP而不是FIP,也不必知道,目的主機處理完請求,把迴應信息發還給網關的FIP。網關收到後,將目的主機返回的數據包的目標IP即FIP修改成發出請求的內網主機的IP地址即SIP,並根據路由表將其發給內網主機。這就是網關的第二個工做--數據包的路由轉發。內網主機只要查看數據包的DIP與發送請求的SIP相同,就會迴應,這就完成了一次請求。
服務器
3、配置Linux系統的IP轉發功能:cookie
首先保證硬件連通,而後打開系統的轉發功能:tcp
對於CentOS系統,CentOS 6 和 CentOS 7開啓路由轉發的方式有區別:ide
一、對於CentOS 6,有三種方法:測試
第一種:
spa
[root@centos6 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
第二種:
[root@centos6 ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 0 //該行的0改成1便可 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 [root@centos6 ~]# sysctl -p //查看修改結果.
第三種:
[root@centos6 ~]# sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1 [root@centos6 ~]# //這種方法我試過,但修改後沒生效。之前兩種爲主吧!
二、對於CentOS7,CentOS 6中的第二種方法不適用,需用以下方法:
[root@CentOS7 ~]# vim /etc/sysctl.d/99-sysctl.conf ... 結尾添加: net.ipv4.ip_forward = 1 :wq [root@CentOS7 ~]# sysctl -p net.ipv4.ip_forward = 1 //查看修改結果. [root@CentOS7 ~]#
4、配置開啓路由轉發功能,實現兩臺不一樣網段的主機實現通訊
實驗環境:
主機 -- 系統 -- 主機名 -- ip :
內網主機 -- CentOS 6.7 -- local_host -- 10.68.7.234
外網主機 -- CentOS 6.7 -- pub_host -- 192.168.1.201
網關主機 -- CentOS 7.1 -- gateway -- 內網ip:10.68.7.107 --外網ip:192.168.1.200
相關配置以下:
首先開啓網關服務器的路由轉發功能:
[root@gateway ~]# sysctl -p net.ipv4.ip_forward = 1 [root@gateway ~]#
在內網主機配置到內網網關的默認路由:
[root@local_host ~]# route add default gw 10.68.7.107
在外網主機配置到外網網關的默認路由:
[root@pub_host ~]# route add default gw 192.168.1.200
經過ping測試連通性:
[root@local_host ~]# ping 192.168.1.201 PING 192.168.1.201 (192.168.1.201) 56(84) bytes of data. 64 bytes from 192.168.1.201: icmp_seq=1 ttl=63 time=0.742 ms 64 bytes from 192.168.1.201: icmp_seq=2 ttl=63 time=1.38 ms 64 bytes from 192.168.1.201: icmp_seq=3 ttl=63 time=2.64 ms 64 bytes from 192.168.1.201: icmp_seq=4 ttl=63 time=2.06 ms ...
[root@pub_host ~]# ping 10.68.7.234 PING 10.68.7.234 (10.68.7.234) 56(84) bytes of data. 64 bytes from 10.68.7.234: icmp_seq=1 ttl=63 time=0.568 ms 64 bytes from 10.68.7.234: icmp_seq=2 ttl=63 time=1.49 ms 64 bytes from 10.68.7.234: icmp_seq=3 ttl=63 time=3.48 ms 64 bytes from 10.68.7.234: icmp_seq=4 ttl=63 time=3.65 ms 64 bytes from 10.68.7.234: icmp_seq=5 ttl=63 time=2.20 ms ...
驗證成功!