Linux的內核參數 ip forward (轉發)

ip地址分公有地址和私有地址,public address是由INIC(internet network information center)負責,這些ip地址分配給註冊並向INIC提出申請的組織機構。經過它訪問internet.private address是屬於非註冊地址,專門爲組織內部使用,private ip address是不可能直接用來跟WAN通訊的,要麼利用幀來通訊(FRE幀中繼,HDLC,PPP),要麼須要路由的NAT功能把私有地址轉換爲一個公有ip!安全

選擇一臺電腦(有兩個網卡或者用單網卡而後用軟件虛擬多一個網卡)充當網關,一個網卡(eth0)鏈接外網ISP,另外一網卡(eth1)鏈接內網(即局域網)。局域網內的ip地址都是私用地址,只能在內部使用,在公網上是不可見的,因此局域網電腦要上網必須修改ip,這就是網關的工做。ide

工做原理spa

內網主機向公網發送數據包時,因爲目的主機跟源主機不在同一網段,因此數據包暫時發往內網默認網關處理,而本網段的主機對此數據包不作任何迴應。因爲源主機ip是私有的,禁止在公網使用,因此必須將數據包的源發送地址修改爲公網上的可用ip,這就是網關收到數據包以後首先要作的工做--ip轉換。而後網關再把數據包發往目的主機。目的主機收到數據包以後,只認爲這是網關發送的請求,並不知道內網主機的存在,也不必知道,目的主機處理完請求,把迴應信息發還給網關。網關收到後,將目的主機發還的數據包的目的ip地址修改成發出請求的內網主機的ip地址,並將其發給內網主機。這就是網關的第二個工做--數據包的路由轉發。內網的主機只要查看數據包的目的ip與發送請求的源主機ip地址相同,就會迴應,這就完成了一次請求。orm


出於安全考慮,Linux系統默認是禁止數據包轉發的。所謂轉發即當主機擁有多於一塊的網卡時,其中一塊收到數據包,根據數據包的目的ip地址將包發往本機另外一網卡,該網卡根據路由表繼續發送數據包。這一般就是路由器所要實現的功能。ip


修改參數路由

Linux系統缺省並無打開IP轉發功能,要確認IP轉發功能的狀態,能夠查看/proc文件系統,使用下面命令: cat /proc/sys/net/ipv4/ip_forward
若是上述文件中的值爲0,說明禁止進行IP轉發;若是是1,則說明IP轉發功能已經打開。
要想打開IP轉發功能,能夠直接修改上述文件: echo 1 > /proc/sys/net/ipv4/ip_forward
把文件的內容由0修改成1。禁用IP轉發則把1改成0。
上面的命令並無保存對IP轉發配置的更改,下次系統啓動時仍會使用原來的值,要想永久修改IP轉發,須要修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 修改後能夠重啓系統來使修改生效,也能夠執行下面的命令來使修改生效: sysctl -p /etc/sysctl.conf 進行了上面的配置後,IP轉發功能就永久使能了。
it

相關文章
相關標籤/搜索