出于安全考慮,Linux系統默認是禁止數據包轉發的。所謂轉發即當主機擁有多于一塊的網卡時,其中一塊收到數據包,根據數據包的目的ip地址將數據包發往本機另一塊網卡,該網卡根據路由表繼續發送數據包。這通常是路由器所要實現的功能。
要讓Linux系統具有路由轉發功能,需要配置一個Linux的內核參數net.ipv4.ip_forward。這個參數指定了Linux系統當前對路由轉發功能的支持情況;其值為0時表示禁止進行IP轉發;如果是1,則說明IP轉發功能已經打開。
net.ipv4.ip_forward的多種配置方式:
臨時生效的配置方式,在系統重啟,或對系統的網絡服務進行重啟后都會失效。這種方式可用于臨時測試、或做實驗時使用。
1、使用 sysctl 指令配置
sysctl 命令的 -w 參數可以實時修改Linux的內核參數,并生效。所以使用如下命令可以開啟Linux的路由轉發功能。
sysctl -w net.ipv4.ip_forward=1
2、修改內核參數的映射文件:/proc/sys/net/ipv4/ip_forward
內核參數在Linux文件系統中的映射出的文件:/proc/sys/net/ipv4/ip_forward中記錄了Linux系統當前對路由轉發功能的支持情況。文件中的值為0,說明禁止進行IP轉發;如果是1,則說明IP轉發功能已經打開。
永久生效的配置方式,在系統重啟、或對系統的網絡服務進行重啟后還會一直保持生效狀態。這種方式可用于生產環境的部署搭建。
1、修改/etc/sysctl.conf 配置文件
在sysctl.conf配置文件中有一項名為net.ipv4.ip_forward的配置項,用于配置Linux內核中的net.ipv4.ip_forward參數。其值為0,說明禁止進行IP轉發;如果是1,則說明IP轉發功能已經打開。
需要注意的是,修改sysctl.conf文件后需要執行指令sysctl -p后新的配置才會生效。
2、修改/etc/sysconfig/network配置文件
在文件最后添加一行:FORWARD_IPV4=YES
需要注意的是,修改/etc/sysconfig/network配置文件后需要重啟網絡服務(service netwrok restart)才能使新的配置生效。