歡迎您光臨本站 註冊首頁

一個使用iptables配置NAT的實例

←手機掃碼閱讀     火星人 @ 2014-03-05 , reply:0

一個使用iptables配置NAT的實例

一個使用iptables配置NAT的實例

趙珂 cn.zhaoke.com
http://blog.zhaoke.com/17.html


本文介紹如何在linux系統上使用iptables建立NAT, 我們可以把它做為一個網關, 從而區域網的多台機器可以使用一個公開的ip地址連接外網. 我使用的方法是重寫通過NAT系統IP包的源地址和目標地址.

備:
CPU: PII或更高
系統: 任何Linux版本
軟體: Iptables
網卡: 2塊

想法:
用你的廣域網IP替換xx.xx.xx.xx
用你的區域網IP替換yy.yy.yy.yy
(比如: 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8)

WAN = eth0 有一個外網ip地址 xx.xx.xx.xx
LAN = eth1 有一個內網ip地址 yy.yy.yy.yy/ 255.255.0.0

過程:
步驟#1. 添加2塊網卡到你的Linux系統.
步驟#2. 確認你的網卡是否正確安裝:

ls /etc/sysconfig/network-scripts/ifcfg-eth* | wc -l
結果輸出應為」2″

步驟#3. 配置eth0, 使用外網ip地址(基於ip的外部網路或互連網)

cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
BROADCAST=xx.xx.xx.255 # 附加選項
HWADDR=00:50:BA:88:72:D4 # 附加選項
IPADDR=xx.xx.xx.xx
NETMASK=255.255.255.0 # ISP提供
NETWORK=xx.xx.xx.0 # 可選
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
GATEWAY=xx.xx.xx.1 # ISP提供

步驟#4. 配置eth1, 使用區域網地址(內部網路)

cat /etc/sysconfig/network-scripts/ifcfg-eth1

BOOTPROTO=none
PEERDNS=yes
HWADDR=00:50:8B:CF:9C:05 # Optional
TYPE=Ethernet
IPV6INIT=no
DEVICE=eth1
NETMASK=255.255.0.0 # Specify based on your requirement
BROADCAST=」"
IPADDR=192.168.2.1 # Gateway of the LAN
NETWORK=192.168.0.0 # Optional
USERCTL=no
ONBOOT=yes

步驟#5. 配置主機 (可選)
cat /etc/hosts
127.0.0.1 nat localhost.localdomain localhost

步驟#6. 配置網關
cat /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=nat
GATEWAY=xx.xx.xx.1 # 互連網或外網網關, ISP提供

步驟#6. 配置DNS
cat /etc/resolv.conf

nameserver 203.145.184.13 # 主DNS伺服器, ISP提供
nameserver 202.56.250.5 # 第二個DNS伺服器, ISP提供

步驟#8. 使用IP Tables配置NAT
# 刪除刷新預設表如」filter」, 其它表如」nat」需清楚標明:
iptables –flush # 刷新所有過濾規則和NAT表.
iptables –table nat –flush
iptables –delete-chain

#刪除所有非預設的規則鏈和nat表
iptables –table nat –delete-chain

#建立IP轉發和偽裝
iptables –table nat –append POSTROUTING –out-interface eth0 -j MASQUERADE
iptables –append FORWARD –in-interface eth1 -j ACCEPT

#打開內核的包轉發功能
echo 1 > /proc/sys/net/ipv4/ip_forward

#應用iptables配置
service iptables restart

步驟#9. 測試
# 用一台客戶機ping網關
ping 192.168.2.1

然後測試能否訪問外網:
ping google.com

內部網路客戶端的配置
局部辦公網路的所有計算機把網關設置為linux(系統)網關的內網ip地址.
DNS設置為ISP提供的DNS.
Windows』95,2000,XP上的配置:

選擇 「開始」 -> 「設置」 -> 「控制面版」
選擇 「網路」 圖標
選擇 「配置」, 然後雙擊乙太網絡的」TCP/IP」部分(不是TCP/IP -> 撥號適配器)
然後輸入:
「網關」: 使用linux系統的內網ip地址.(192.168.2.1)
「DNS配置」: 使用IPS提供的DNS地址. (通常使用互連網地址)
「IP地址」: ip地址(192.168.XXX.XXX - 靜態)和掩碼(小的本地辦公網路通常使用255.255.0.0).

參考:
Step-By-Step Configuration of NAT with iptables

備註:
文章基礎, 不過實用. For beginners.
轉載請保持文章完整性, 歡迎交流.

[ 本帖最後由 iventor 於 2006-11-24 04:36 編輯 ]
《解決方案》

學習了
《解決方案》

我根據上面步驟已經可以代理上網了,客戶端DNS設置為ISP提供的DNS.如果DNS設置為內網的IP,我如何設置linux NAT.因為公司有200多台客戶機,以前網關和DNS都設置代理伺服器內網的IP的.如果用了linux NAT做代理伺服器那我要每台客戶端都要重新設置一次.要花很長時間的.

[火星人 ] 一個使用iptables配置NAT的實例已經有2857次圍觀

http://coctec.com/docs/service/show-post-43846.html