您的位置:首頁>正文

在Ubuntu下開啟IP轉發的方法

IP地址分為公有ip地址和私有ip地址, Public Address是由INIC(internet network information center)負責的, 這些IP位址分配給了註冊並向INIC提出申請的組織機構。 Private Address屬於非註冊位址, 專門為組織內部使用。 Private Address是不可能直接用來跟WAN通信的, 要麼利用幀來通信(FRE框架轉送, HDLC,PPP),要麼需要路由的轉發(nat)功能把私有位址轉換為公有位址才行。

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

1、通過訪問sysctl的內核ipv4.ip_forward來判斷轉發是否開啟。

說明:現在有些網路已經普及ipv6的, 所以下面的命令可以從ipv4改為ipv6即可

使用sysctl:

sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 0

或者檢查/proc下的檔:

cat /proc/sys/net/ipv4/ip_forward 0

ipv4轉發沒有開啟 (值為 0)

2、啟動IP轉發

通過sysctl可以開啟ipv4的轉發功能 (無需重啟):

sysctl -w net.ipv4.ip_forward=1

或者

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

這種設置只是暫時的, 它的效果會隨著電腦的重啟而失效。

通過在/etc/sysctl.conf設置參數:

如果想使IP轉發永久生效, 就請修改/etc/sysctl.conf , 在這裡可以增加一條net.ipv4.ip_forward = 1

/etc/sysctl.conf: net.ipv4.ip_forward = 1

如果ipv4轉發項已被設為0那麼你只需要將它改為1。

3、要想是更改生效, 你需要執行以下指令:

sysctl -p /etc/sysctl.conf

在紅帽系列的發行版本上可以通過重啟網路服務使之生效:

service network restart

而在Debian/Ubuntu系列的發行版本則用這樣的命令:

#早期版本

/etc/init.d/procps.sh restart

#最新版本

/etc/init.d/procps restart

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示