天天看點

如何在 Linux 上用 IP轉發使内部網絡連接配接到網際網路

大家好,今天我們學習一下在 linux 上用 iptables 實作從一個網絡接口到另一個接口的ip轉發(資料包轉發)。ip轉發的概念是,使 linux 機器像路由器一樣将資料從一個網絡發送到另一個網絡。是以,它能作為一個路由器或者代理伺服器,實作将一個連接配接的網際網路或者網絡連接配接共享給多個用戶端機器。

這是一些啟用ip轉發或網絡包轉發方法的簡單步驟。

如何在 Linux 上用 IP轉發使内部網絡連接配接到網際網路

<a target="_blank"></a>

首先,我們需要在我們的 linux 作業系統上啟用 ipv4 轉發。要做到這點,我們需要用 sudo 模式在 shell 或終端下執行下面的指令。

<code>$ sudo -s</code>

<code></code>

<code># echo 1 &gt; /proc/sys/net/ipv4/ip_forward</code>

如何在 Linux 上用 IP轉發使内部網絡連接配接到網際網路

臨時ip轉發

注意:上面的指令能馬上啟用ip轉發,但隻是臨時的,直到下一次重新開機。要永久啟用,我們需要使用我們慣用的文本編輯器打開 /etc/sysctl.conf 檔案。

<code># nano /etc/sysctl.conf</code>

然後,增加 net.ipv4.ip_forward = 1 到檔案中,或者删除那行的注釋,儲存并退出檔案。

<code>net.ipv4.ip_forward = 1</code>

如何在 Linux 上用 IP轉發使内部網絡連接配接到網際網路

編輯 sysctl

運作下面的指令啟用更改。

<code># sysctl -p /etc/sysctl.conf</code>

如何在 Linux 上用 IP轉發使内部網絡連接配接到網際網路

啟用 sysctl 更改

我們需要允許特定的(或者所有的)資料包通過我們的路由器。在這之前,我們要知道連接配接我們 linux 的網絡裝置的接口名稱。我們可以通過在終端或者 shell 運作以下指令獲得接口名稱。

<code># ifconfig -a</code>

如何在 Linux 上用 IP轉發使内部網絡連接配接到網際網路

ifconfig

這裡,在我們的機器中, eth2 是連接配接到網際網路或者網絡的網卡接口, wlan2 是我們要使用 iptables 從 eth2 轉發資料包的接口。要實作轉發,我們需要運作以下指令。

<code># iptables -a forward -i wlan2 -o eth2 -j accept</code>

注意:請用你 linux 機器中的可用裝置名稱替換 wlan2 和 eth2。

現在,由于netfilter/iptables是一個無狀态的防火牆,我們需要讓 iptables 允許已建立的連接配接通過。要做到這點,我們要運作下面的指令。

<code># iptables -a forward -i eth2 -o wlan2 -m state --state established,related -j accept</code>

如何在 Linux 上用 IP轉發使内部網絡連接配接到網際網路

用 iptables 轉發

然後,最後我們需要通過執行下面的指令修改發送到網際網路的資料包的源位址為 eth2。

<code># iptables -t nat -a postrouting -o eth2 -j masquerade</code>

如何在 Linux 上用 IP轉發使内部網絡連接配接到網際網路

配置 nat

最後,我們在我們以 iptables 作為防火牆 linux 機器上成功的配置了從一個接口到另一個接口的資料包轉發。這篇文章教給你将你的私有接口連接配接到網際網路,不需要橋接接口,而是将從一個接口進來的資料包路由到另一個接口。就是這些,如果你有任何問題、建議、回報,請寫到下面的評論框中,然後我們可以改進或更新我們的内容。非常感謝!享受吧 :-)

<b>原文釋出時間為:2015-06-09</b>

<b>本文來自雲栖社群合作夥伴“linux中國”</b>

繼續閱讀