1. 程式人生 > >/proc/sys/net/ipv4/ip_forward

/proc/sys/net/ipv4/ip_forward

信息 內部 必須 兩個 rc.d 改ip sysconf 文件 路由轉發

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

出於安全考慮,Linux系統默認是禁止數據包轉發的。所謂轉發即當主機擁有多於一塊的網卡時,其中一塊收到數據包,根據數據包的目的ip地址將包發往本機另一網卡,該網卡根據路由表繼續發送數據包。這通常就是路由器所要實現的功能。
配置Linux系統的ip轉發功能,首先保證硬件連通,然後打開系統的轉發功能
less /proc/sys/net/ipv4/ip_forward,該文件內容為0,表示禁止數據包轉發,1表示允許,將其修改為1。
可使用命令echo "1" > /proc/sys/net/ipv4/ip_forward 修改文件內容,
重啟網絡服務或主機後失效
若要其自動執行,可將命令echo "1" > /proc/sys/net/ipv4/ip_forward 寫入腳本/etc/rc.d/rc.local

或者 在/etc/sysconfig/network腳本中添加 FORWARD_IPV4="YES"

/proc/sys/net/ipv4/ip_forward