歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> iptables nat跳轉

iptables nat跳轉

日期:2017/2/28 15:46:20   编辑:Linux教程

1、目的:解決網絡跨運營商互訪質量不佳的問題,通過一台雙網卡連接兩個不同的運營商的linux主機,通過iptablse進行nat跳轉,從而解決此網絡問題。

2、主參考文檔Iptables 指南.chm,以下的文檔均指它,下載地址:

http://www.linuxidc.com/Linux/2012-07/64851.htm

3、主要的表:
filter:篩選過濾表,不加表時,默認是這個表,用於防火牆規則過濾
nat:轉發表,用於IP跳轉
mangle:改包的一些屬性,用於流控,QOS等,此表用得很少,可以不理它

4、安裝:有些系統是自帶的,有些不自帶或比較老的要下載再編譯安裝,文檔2有介紹

5、打開服務:service iptables start
加入開機啟動:chkconfig iptables on

6、查看服務狀態(有時顯示的不准,如裡面一條規則也沒有時)
service iptables status --也可以用於查看所有的表鏈規則

7、為開啟路由轉發必須執行的命令
echo "1" > /proc/sys/net/ipv4/ip_forward --這個是開啟轉發必要的命令,但這樣操作是臨時的,重啟機子就還原了,永久設置見下面
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

8、永久設置轉發功能,防止重啟失效
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.tcp_syncookies = 1
# sysctl -p (使設置馬上生效)

9、語法格式
iptables [-t table] command [match] [target/jump]
--table
如果不寫,默認是指filter表

--command
見文檔6.3

--match
見文檔6.4

--target/jum
見文檔6.5

10、單網卡實例:x------〉廣州機房(即中轉機子)120.132.152.142:9101------〉運營商219.140.165.133:80。-j MASQUERADE智能匹配,但消耗一定的cpu
iptables -t nat -A PREROUTING -p tcp --dport 9101 -j DNAT --to 219.140.165.133:80
iptables -t nat -A POSTROUTING -p tcp --dport 80 -j MASQUERADE

11、雙網卡雙外網實例:X------〉183.62.178.85:7001------〉158.250.56.154:7001------〉112.90.176.35:7001
iptables -t nat -A PREROUTING -d 183.62.178.85 -p tcp -m tcp --dport 7001 -j DNAT --to-destination 112.90.176.35:7001
iptables -t nat -A POSTROUTING -d 112.90.176.35 -p tcp -m tcp --dport 7001 -j SNAT --to-source 158.250.56.154

12、常用命令:
--清空nat表PREROUTING鏈,謹慎操作
iptables -t nat -F PREROUTING
--清空nat表POSTROUTING鏈,謹慎操作
iptables -t nat -F POSTROUTING
--顯示明細
iptables -t nat -nvL --line
--刪除編號88
iptables -t nat -D PREROUTING 88
--保存
service iptables save 或/etc/sysconfig/iptables save
--重啟iptables
service iptables restart

13、配置完生成的文件
/etc/sysconfig/iptables #當前的配置
/etc/sysconfig/iptables.save #上次的配置備份

14、telnet測試

--添加靜態路由---------------
15、雙網卡雙外網的情況下,不一定所有環境兩個網卡都可以ping通,這主要取決於上層網絡提供商的設置,一般用戶控制改變不了的。只有設置了網關的網卡可以ping通,但卻不影響使用。
如果只有一個能ping通的話,那就必須添加路由的方式來解決跳轉的問題。
如果兩個都可以ping通,雖跳轉可以成功,但出口都默認只是設置的默認網關出口,相當於網絡問題只解決了一半。

16、環境說明:
eth0:IPADDR=183.62.178.85 GATEWAY=183.62.178.94 --電信網絡
eth1:IPADDR=58.250.56.154 GATEWAY=58.250.56.1 --聯通網絡
目的訪問:112.90.176.35:7001
測試路徑:telnet 183.62.178.85 7001
路徑說明:X------〉183.62.178.85:7001------〉158.250.56.154:7001------〉112.90.176.35:7001
設置的跳轉命令如上面的11點

17、路由添加:
路由添加:# route add -net 112.90.176.0 netmask 255.255.255.0 gw 58.250.56.1 eth1
或# route add -net 112.90.176.0/24 gw 58.250.56.1 eth1
刪除路由:# route delete -net 112.90.176.0 netmask 255.255.255.0 gw 58.250.56.1 eth1
或# route delete -net 112.90.176.0/24 gw 58.250.56.1 eth1

18、假設默認網關是電信,且源地址或目的地址是能判斷為聯通的,那麼就必須對這個聯通的源地址或目的地址做如上的靜態路由。

19、重啟機子後,路由會失效,故要把它加到/etc/rc.d/rc.local中,如果不小心重啟了網卡,也會讓路由失效,此時就得到/etc/rc.d/rc.local找到腳本再運行一下了。

Copyright © Linux教程網 All Rights Reserved