Linux ARP代理 與 NAT
Linux系統預設並沒有開啟IP轉發功能,要確認IP轉發功能的狀態,可以檢視/proc檔案系統,使用下面命令:
cat /proc/sys/net/ipv4/ip_forward
如果上述檔案中的值為0,說明禁止進行IP轉發;如果是1,則說明IP轉發功能已經開啟。
要想開啟IP轉發功能,可以直接修改上述檔案:
echo 1 > /proc/sys/net/ipv4/ip_forward
把檔案的內容由0修改為1。禁用IP轉發則把1改為0。
上面的命令並沒有儲存對IP轉發配置的更改,下次系統啟動時仍會使用原來的值,要想永久修改IP轉發,需要修改/etc/sysctl.conf檔案,修改下面一行的值:
net.ipv4.ip_forward = 1
修改後可以重啟系統來使修改生效,也可以執行下面的命令來使修改生效:
sysctl -p /etc/sysctl.conf
進行了上面的配置後,IP轉發功能就永久使能了
有時候我們會在一個已有網路(10.10.10.0/24)內組建一個實驗網路(192.168.1.0/24),網路結構如上圖所示。
假設我們不能控制(修改)A網路內除D主機以外的系統配置,但可以完全控制網路B內的主機。
此時Server D實際上要承擔一個路由的角色(它有兩張網路卡分別在兩個網路A,B內)
所以先開啟其上的核心路由轉發功能,修改/etc/sysctl.conf中的如下配置
net.ipv4.ip_forward
= 1 |
儲存後應用檢視
1
2
|
#
sysctl -p net.ipv4.ip_forward
= 1 |
另外需要保證Server D上的路由表配置正確,這裡我們假設D上10.10.10.103所在的介面為eth0, 而192.168.1.1所在的介面為eth1
最後將網路B內的主機的預設閘道器都設定為Server D的192.168.1.1地址,到此準備工作已經完成。下面可以採用不同的方法來使得網路B和網路A中的主機實現不同程度的互聯。
SNAT
如果想讓B網路內的所有主機單向訪問A網路內的資源可以在Server D上做一個NAT(SNAT):
iptables
-t nat -A POSTROUTING -o eth0 -j MASQUERADE |
這種方法就是最常用的NAT,內部網路B中的主機可以主動發起請求訪問的外網A中的資源,實現內外網主機通訊,但是外網A內的主機無法主動與內網主機建立連線。內網B中的主機沒有A網內的獨立IP。
如果只想讓某臺B網中的主機訪問A網,則可以限定來源IP,具體可以參考iptables手冊:
iptables
-t nat -A POSTROUTING -s 192.168.100.100 -o eth0 -j MASQUERADE |
SNAT + DNAT + ARP代理 = 浮動IP
如果我們想為網路B內的Server E分配一個IP如10.10.10.104(A網路的地址),使得網路A內的主機可以直接訪問主機E
此時我們可以在Server D上先做一個SNAT:
iptables
-t nat -A POSTROUTING -o eth0 -s 192.168.1.100(E在B網內的地址) -j SNAT --to-source 10.10.10.104 |
這樣網路A網路收到Server E發出的包時,看到的IP就是10.10.10.104,其響應也會回發給這個地址
然後我們在Server D(閘道器)上做一個DNAT:
iptables
-t nat -A PREROUTING -i eth0 -d 10.10.10.104 -j DNAT --to-destination 192.168.1.100 |
這樣Server D收到目的IP為10.10.10.104的包時就會修改目的IP為網路B內的Server E的IP(192.168.1.100),自然的按照Server D上的路由規則這個包會從介面eth1出去,經過交換機B,到達Server E。
現在還存在一個問題,我們不能修改網路A內的主機配置,怎麼做才能讓IP為10.10.10.104的包發到Server D來(因為主機D自己的IP是10.10.10.103)。如果我們自Server D上再插入一張網路卡,讓後將其地址設為10.10.10.104就可以,不過我們沒有必要這麼做。我們在主機D的eth0介面上加入一個次級地址即可
ip
addr add 10.10.10.104/24 dev eth0 |
這樣網路A內的主機在使用ARP協議查詢10.10.10.104所對應的MAC地址時,Server D就能做出響應,傳送一個虛擬的MAC地址,於是發往10.10.10.104的包就會到達主機D,在進行上述的DNAT步驟,兩邊就可以互通了。
服務埠對映 SNAT + DNAT
浮動IP的方案需要佔用一個網路A的IP,且會完全暴露主機E,有時可以通過埠對映向外部網路A暴露網路B內的服務,如將Server D上的2222埠與Server E上的22埠建立對映,這樣網路A內的主機訪問10.10.10.103:2222實際就是訪問網路B內的主機192.168.100:22。
相關文章
- 交換機ARP代理詳解
- HCNP Routing&Switching之代理ARP
- Linux NAT轉發Linux
- NAT與內網穿透內網穿透
- Linux基礎命令---arpLinux
- Linux 核心引數 arp_ignore & arp_announce 詳解Linux
- ARP協議介紹與ARP協議的攻擊手法協議
- NAT(PAT)與埠對映(轉)
- 解密網路通訊的關鍵技術(上):DNS、ARP、DHCP和NAT,你瞭解多少?解密DNS
- 解密網路通訊的關鍵技術(下):DNS、ARP、DHCP和NAT,你瞭解多少?解密DNS
- ARP協議詳解之Gratuitous ARP(免費ARP)協議UI
- Linux的nat埠轉換例項Linux
- Linux KVM禁用virbr0 NAT介面Linux
- Python寫ARP區域網主機存活掃描與ARP欺騙工具Python
- ARP協議詳解之ARP動態與靜態條目的生命週期協議
- 正向代理與反向代理
- 反向代理與正向代理
- ARP掃描工具arp-scan
- 系列TCP/IP協議-ARP與RARPTCP協議
- 淺談ARP病毒的清除與預防
- ARP原理
- 在linux上用arptables配置arp防火牆Linux防火牆
- 4、NAT
- ARP病毒攻擊技術分析與防禦
- Linux iptables實現nat轉發操作步驟Linux
- 正向代理與反向代理總結
- 圖解正向代理與反向代理圖解
- HTTP代理與SOCKS代理詳解HTTP
- 【論文】網路安全與入門-ARP攻擊
- linux下正向代理/反向代理/透明代理使用說明Linux
- Linux 虛擬機器Nat模式網路設定Linux虛擬機模式
- Linux網路配置:Nat和橋接模式詳解Linux橋接模式
- Linux 2.4 NAT HOWTO 簡體中文版(轉)Linux
- 反向代理與正向代理差異分析
- 圖文總結:正向代理與反向代理
- ARP快取表的構成ARP協議全面實戰協議詳解、攻擊與防禦快取協議
- linux 設定代理Linux
- Linux Docker使用代理LinuxDocker