SNAT/DNAT原理與應用
阿新 • • 發佈:2021-08-08
SNAT原理與應用
應用環境
- 區域網主機共享單個公網IP地址接入Internet(私有IP不能在Internet中正常路由)
- 一個IP地址做SNAT轉換,一般可以讓內網 100到200 臺主機實現上網
原理
修改資料包的源地址
SNAT轉換前提條件
- 區域網各主機已正確設定IP地址、子網掩碼、預設閘道器地址
- Linux閘道器開啟IP路由轉發
路由轉發開啟方式
1 1.臨時開啟: 2 echo 1 > /proc/sys/net/ipv4/ip_forward 3 或 4 sysctl -w net.ipv4.ip_forward=1 5 2.永久開啟: 6 vim /etc/sysctl.conf 7 net.ipv4.ip_forward = 1 #將此行寫入配置檔案 8 3.sysctl -p#讀取修改後的配置
SNAT轉換具體格式
固定的公網IP地址
1 iptables -t nat -A POSTROUTING -s 192.168.80.0/24(內網IP) -o(出站) ens33(外網網絡卡) -j SNAT --to 12.0.0.1(外網IP或地址池) 2 或 3 iptables -t nat -A POSTROUTING -s 192.168.80.0/24(內網IP) -o(出站) ens33(外網網絡卡) -j SNAT --to-source 12.0.0.1-12.0.0.10(外網IP或地址池)
非固定的公網IP地址(共享動態IP地址)
1 iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE
DNAT原理與應用
應用環境
在Internet中釋出位於區域網內的伺服器。
主機型防火牆:主要使用INPUT、OUTPUT鏈,設定規則時一般要詳細的指定到埠。
網路型防火牆:主要使用FORWARD鏈,設定規則時很少去指定到埠,一般指定到IP地址或者到網段即可。
原理
修改資料包的目的地址
DNAT轉換前提條件
區域網的伺服器能夠訪問Internet
閘道器的外網地址有正確的DNS解析記錄
Linux閘道器開啟IP路由轉發
DNAT轉換
使用DNAT時,同時配合SNAT使用,才能實現響應資料包的正確返回
- 釋出內網的Web服務
1 #把從ens33進來的要訪問web服務的資料包目的地址轉換為 192.168.80.11 2 iptables -t nat -A PREROUTING -i(入站) ens33(外網網絡卡) -d 12.0.0.1(外網IP) -p tcp --dport 80 -j DNAT --to 192.168.80.11(內網伺服器Ip) 3 或 4 iptables -t nat -A PREROUTING -i(入站) ens33(外網網絡卡) -d 12.0.0.1(外網IP) -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11(內網伺服器IP) 5 iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.80.11-192.168.80.20(地址池)
- 釋出時修改目標埠
1 #釋出區域網內部的OpenSSH伺服器,外網主機需使用250埠進行連線 2 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.11:22
1 ssh -p 250 [email protected] #在外網環境中使用SSH測試 2 yum -y install net-tools #若沒有 ifconfig 命令可提前使用 yum 進行安裝 3 ifconfig ens33
防火牆規則的備份和還原
匯出(備份)所有表的規則
1 iptables-save > /opt/ipt.txt
匯入(還原)規則
1 iptables-restore < /opt/ipt.txt 2 將iptables規則檔案儲存在 /etc/sysconfig/iptables 中,iptables服務啟動時會自動還原規則 3 iptables-save > /etc/sysconfig/iptables 4 systemctl stop iptables #停止iptables服務會清空掉所有表的規則 5 systemctl start iptables #啟動iptables服務會自動還原/etc/sysconfig/iptables 中的規則
linux系統抓包
格式
例:tcpdump tcp -i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
選項 | 說明 |
---|---|
tcp | ip icmp arp rarp和tcp、udp、icmp這些選項等都要放到第一個引數的位置,用來過濾資料包的型別 |
-i ens33 | 只抓經過介面ens33的包 |
-t | 不顯示時間戳 |
-s 0 | 抓取資料包時預設抓取長度為68位元組。加上-s 0後可以抓取完整的資料包 |
-c 100 | 只抓取100個數據包 |
dst port !22 | 不抓取目標埠是22的資料包 |
src net 192.168.1.0/24 | 資料包的源網路地址為192.168.1.0/24 |
-w ./target.cap | 儲存成cap檔案,方便用ethereal(wireshark)分析 |