Linux ip_forward 數據包轉發

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

要讓Linux系統具有路由轉發功能,需要配置一個Linux的內核參數net.ipv4.ip_forward。這個參數指定了Linux系統當前對路由轉發功能的支持情況;其值為0時表示禁止進行IP轉發;如果是1,則說明IP轉發功能已經打開。

要配置Linux內核中的net.ipv4.ip_forward參數有多種配置方式可供選擇,下面分別介紹。

臨時生效的配置方式

臨時生效的配置方式,在系統重啟,或對系統的網絡服務進行重啟后都會失效。這種方式可用于臨時測試、或做實驗時使用。

使用 sysctl 指令配置

sysctl 命令的 -w 參數可以實時修改Linux的內核參數,并生效。所以使用如下命令可以開發Linux的路由轉發功能。

sysctl -w net.ipv4.ip_forward=1

有關 sysctl 指令的更詳細介紹,請參見Linux的系統man手冊(man sysctl),或其他有關sysctl指令詳細介紹的文章。

修改內核參數的映射文件:/proc/sys/net/ipv4/ip_forward

內核參數在Linux文件系統中的映射出的文件:/proc/sys/net/ipv4/ip_forward中記錄了Linux系統當前對路由轉發功能的支持情況。文件中的值為0,說明禁止進行IP轉發;如果是1,則說明IP轉發功能已經打開。可使用vi編輯器修改文件的內容,也可以使用如下指令修改文件內容:

echo 1 > /proc/sys/net/ipv4/ip_forward

永久生效的配置方式

永久生效的配置方式,在系統重啟、或對系統的網絡服務進行重啟后還會一直保持生效狀態。這種方式可用于生產環境的部署搭建。

修改/etc/sysctl.conf 配置文件

在sysctl.conf配置文件中有一項名為net.ipv4.ip_forward的配置項,用于配置Linux內核中的net.ipv4.ip_forward參數。其值為0,說明禁止進行IP轉發;如果是1,則說明IP轉發功能已經打開。

需要注意的是,修改sysctl.conf文件后需要執行指令sysctl -p 后新的配置才會生效。

有關 sysctl 指令和sysctl.conf配置文件的更詳細介紹,請參見Linux的系統man手冊(man sysctlman sysctl.conf),或其他有關sysctl指令和sysctl.conf配置文件的文章。

修改/etc/sysconfig/network配置文件

在文件最后添加一行:FORWARD_IPV4=YES

需要注意的是,修改/etc/sysconfig/network配置文件后需要重啟網絡服務(service netwrok restart)才能使新的配置生效。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,218評論 2 33
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,908評論 18 139
  • Ubuntu的發音 Ubuntu,源于非洲祖魯人和科薩人的語言,發作 oo-boon-too 的音。了解發音是有意...
    螢火蟲de夢閱讀 99,553評論 9 467
  • 這點主要是針對女孩的,一些自卑,沒有信心,不看好自己的,我也是過來人,可能也是屬于那種比較內向,自卑的,但是隨著...
    ffdhjffg閱讀 651評論 0 0
  • today is the first day today is the last day
    紅茶jl閱讀 88評論 0 2