Linux中國

怎樣使用linux的iptables工具進行網路共享

術語字彙

  • 私有IP地址(路由不可達地址)是一個被用於本地區域網的IP地址(在互聯網中不可見)。
  • 公用IP地址(路由可達地址)是一個在互聯網中可見的IP地址。
  • IP偽裝是一項允許一系列機器通過MASQ網關連接互聯網的功能。這些MASQ網關之外的機器在互聯網中是不可見的。MASQ之後的機器中任何流入或流出的數據必須經過MASQ網關。
  • 網路地址轉換(NAT)是一項通過IP偽裝技術可以使私有IP地址訪問互聯網的功能。

Hardware Requirements

硬體要求

  • 一台有兩個介面(一個公有IP地址和其他的私有IP地址)的linux主機,這個主機將被用作網關。
  • 一台或者多台擁有私有IP地址的linux/windows系統的PC或者筆記本。
  • 交換機/集線器(可選)。

教程步驟

接下來的過程需要在linux主機(用於共享的網關)上完成。

1、激活IP轉發

為了設置網路共享,你需要在linux主機上更改一個內核參數來使能IP轉發功能。內核啟動參數設定在/etc/sysctl.conf文件中。

打開這個文件,定位到含有"# net.ipv4.ip_forward = 0"的這一行,移除#號(即取消注釋),然後將其值設置為1,改好之後應該和下面的一致。

net.ipv4.ip_forward = 1

你還要使激活IP轉發功能生效,通過執行下面的命令:

$ sudo sysctl -w net.ipv4.ip_forward=1
$ sudo sysctl -p

2、NAT配置

另一個網路共享的重要部分是NAT配置,這可以通過使用iptables的命令,iptables包含四個防火牆的規則表:

  • FILTER (默認表格)
  • NAT
  • MANGLE
  • RAW

這個教程中我們將僅使用兩個表格:FILTER和NAT表格。

首先,刷新所有活躍的防火牆的規則。

$ sudo iptables -X
$ sudo iptables -F
$ sudo iptables -t nat -X
$ sudo iptables -t nat -F

在輸入表格中,你需要設置轉發鏈(FORWARD)成可接受的(ACCEPT)目的地,因此所有通過主機的數據包將會被正確的處理。

$ sudo iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

在NAT表中,你必須為你的WAN口啟用IP偽裝功能,我們假設WAN口協議是ppp0。為了在ppp0介面上使能IP偽造技術,我們使用以下的命令:

$ sudo iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE

3、配置私有IP地址

在linux主機上的所有配置完成後,你需要配置其他設備(linux/windows的PC或筆記本)的DNS伺服器以及默認網關,讓它們的數據流可以指向linux主機。注意你不需要在linux主機上設置一個DNS伺服器,從其他設備發出的每一個DNS請求都會通過上游的ISP自動轉發到linux主機上。

如果你的其他設備上用的系統是linux,你可以通過以下命令來更改他們的默認網關和DNS伺服器。假設你的網段是192.168.1.0/24的私有IP地址網段,linux主機上綁定的IP地址是192.168.1.1。

$ sudo ip route del default
$ sudo ip route add default via 192.168.1.1
$ sudo sh -c "echo 'nameserver 192.168.1.1' > /etc/resolv.conf"

如果還有其他的linux設備,那麼你可以重複以上命令。

如果你有windows設備,你可以通過控制面板的網路連接屬性來更改默認網關和DNS伺服器。

4、完整的腳本

這是一個在linux主機上設置網路連接共享的一個完整的腳本。WAN口(ppp0協議)需要根據你具體的網路介面協議來替換。

$ sudo vi /usr/local/bin/ishare
#!/bin/bash

## Internet connection shating script

sysctl -w net.ipv4.ip_forward=1
sysctl -p
iptables -X
iptables -F
iptables -t nat -X
iptables -t nat -F
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD  -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE

保存以上的腳本為/usr/local/bin/ishare,然後添加可執行許可權通過執行下面的命令。

$ sudo chmox +x /usr/local/bin/ishare

如果你需要這個腳本開機啟動,你需要在/etc/rc.local文件中執行這個腳本,並在該文件中的"exit 0"之前添加下面一行。

/usr/local/bin/ishare

via: http://xmodulo.com/2014/06/internet-connection-sharing-iptables-linux.html

譯者:yujianxuechuan 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國