用iptables作軟路由實現共享上網

咱們平時使用的大多數家用路由器都是經過NAT(Network Address Translation,網絡地址轉換)功能實現共享上網的,iptables是linux內核裏整合的一個ip信息包過濾系統,使用iptables配置nat就能夠實現和家用路由器同樣的上網效果。(本文永久地址:http://woymk.blog.51cto.com/10000269/1923952) html


環境:兩臺電腦,都是centos6的系統,其中一臺能上網,一臺不能上網,兩臺電腦經過內網相連。linux

A電腦:外網(eth0) ip爲192.168.1.1,內網(eth1) ip爲10.1.1.1nginx

B電腦:內網(eth0) ip爲10.1.1.2centos

 

配置方法以下:網絡

一、啓用Linux的ip轉發功能curl

首先查看ip轉發功能是否已經打開ide

sysctl -a |grep 'net.ipv4.ip_forward'測試

若是值爲1,則說明已經打開,不然執行如下操做ui

echo "1" >/proc/sys/net/ipv4/ip_forwardurl

這是臨時修改,系統重啓後失效

或者直接修改配置文件

vi /etc/sysctl.conf

找到

net.ipv4.ip_forward = 0

改爲

net.ipv4.ip_forward = 1

而後運行 sysctl -p

 

二、設置iptables規則

在A電腦上執行

iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -j SNAT --to-source 192.168.1.1

保存配置

service iptables save


這個語句就是告訴系統把即將要流出本機的數據的source ip address修改爲爲192.168.1.1。這樣,數據包在達到目的機器之後,目的機器會將包返回到192.168.1.1。若是不作這個操做,那麼數據包在傳遞的過程當中,reply的包確定會丟失。

 

假如當前系統用的是ADSL/3G/4G動態撥號方式,那麼每次撥號,出口ip都會改變,snat是把源地址轉換爲固定的ip地址,這樣就會有侷限性。這時可使用:


iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE


與snat不一樣的是,masquerade能夠自動讀取外網卡得到動態ip地址,而後進行地址轉換。

POSTROUTING:在經過Linux路由器以後作的策略,也就是路由器的外網接口。

-s 10.1.1.0/24:源數據所來自這個網段,也能夠是單個ip,不寫表示全部內網ip。

-o eth0 -j MASQUERADE:表示在eth0這個外網接口上使用IP假裝。

 

三、 在B電腦上設置網關

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

添加或修改

GATEWAY=10.1.1.1

保存後重啓網絡服務

service network restart

 

四、測試

在B電腦上執行

ping www.163.com

[root@www ~]# ping www.163.com
PING 163.xdwscache.ourglb0.com (58.216.21.93) 56(84) bytes of data.
64 bytes from 58.216.21.93: icmp_seq=1 ttl=128 time=8.23 ms
64 bytes from 58.216.21.93: icmp_seq=2 ttl=128 time=9.72 ms
64 bytes from 58.216.21.93: icmp_seq=3 ttl=128 time=8.78 ms
64 bytes from 58.216.21.93: icmp_seq=4 ttl=128 time=8.97 ms


curl www.163.com -I

[root@www ~]# curl www.163.com -I
HTTP/1.0 200 OK
Expires: Tue, 09 May 2017 15:21:02 GMT
Date: Tue, 09 May 2017 15:19:42 GMT
Server: nginx
Content-Type: text/html; charset=GBK
Vary: Accept-Encoding,User-Agent,Accept
Cache-Control: max-age=80
Via: 1.1 cache.163.com:80 (squid)
X-Via: 1.0 czdx87:3 (Cdn Cache Server V2.0), 1.0 adxxz41:6 (Cdn Cache Server V2.0)
Connection: keep-alive


結果顯示已經能夠正常上網!

相關文章
相關標籤/搜索