iptables之NAT代理-內網訪問外網


1、前言

本文使用NAT功能:內網服務器,想上網又不想被攻擊。

工作原理:
內網主機向公網發送數據包時,由於目的主機跟源主機不在同一網段,所以數據包暫時發往內網默認網關處理,而本網段的主機對此數據包不做任何回應。由於源主機ip是私有的,禁止在公網使用,所以必須將數據包的源發送地址修改成公網上的可用ip,這就是網關收到數據包之后首先要做的工作--ip轉換。然后網關再把數據包發往目的主機。目的主機收到數據包之后,只認為這是網關發送的請求,並不知道內網主機的存在,也沒必要知道,目的主機處理完請求,把回應信息發還給網關。網關收到后,將目的主機發還的數據包的目的ip地址修改為發出請求的內網主機的ip地址,並將其發給內網主機。這就是網關的第二個工作--數據包的路由轉發。內網的主機只要查看數據包的目的ip與發送請求的源主機ip地址相同,就會回應,這就完成了一次請求。

出於安全考慮,Linux系統默認是禁止數據包轉發的。所謂轉發即當主機擁有多於一塊的網卡時,其中一塊收到數據包,根據數據包的目的ip地址將包發往本機另一網卡,該網卡根據路由表繼續發送數據包。這通常就是路由器所要實現的功能。

語法和端口轉發規則:

DNAT:目標地址轉換

SNAT:源地址轉換

 

 本次部署由服務端和客戶端兩部分構成:

       服務端主機:eth0:10.0.0.61    eth1:172.16.1.61

       客戶端主機:eth1:172.16.1.51

說明: 10.0.0.1/24網段是外網IP;172.16.1.0/24是內網IP網段。

2、服務端部署(ip:10.0.0.61、172.16.1.61)

a、開啟ip路由轉發功能

#臨時開啟方法:
echo "1" > /proc/sys/net/ipv4/ip_forward #該文件內容為0,表示禁止數據包轉發,1表示允許,將其修改為1。
#永久開啟方法
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

b、添加SNAT規則

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.61

c、iptables保存規則

service iptables save            
/etc/init.d/iptables restart
設置開機啟動
chkconfig iptables on

3、客戶端配置(ip:172.16.1.51)

a、添加轉發IP(172.16.1.61)為網關

第一種方法:
echo -e 'DNS1=223.5.5.5\nDNS2=223.6.6.6\nGATEWAY=172.16.1.61' >> /etc/sysconfig/network-scripts/ifcfg-eth1
重啟網卡
/etc/init.d/network restart

第二種方法:
route add default gw 172.16.1.61

b、測試上網是否正常

查看路由表是否有設置的網關
[root@db01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
0.0.0.0         172.16.1.61     0.0.0.0         UG    0      0        0 eth1

ping測試網絡連通性
[root@db01 ~]# ping www.baidu.com
PING www.a.shifen.com (111.13.100.92) 56(84) bytes of data.
64 bytes from 111.13.100.92: icmp_seq=1 ttl=127 time=11.4 ms
64 bytes from 111.13.100.92: icmp_seq=2 ttl=127 time=7.09 ms
64 bytes from 111.13.100.92: icmp_seq=3 ttl=127 time=6.59 ms

 

給自己看的注意事項。

注:模擬測試時,多塊網卡測試注意事項

需關閉上網的網卡,再進行功能測試

sed -i 's#ONBOOT=yes#ONBOOT=no#g' /etc/sysconfig/network-scripts/ifcfg-eth0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM