看板 Linux 關於我們 聯絡資訊
※ 引述《NKill (可樂戒指)》之銘言: : 我有一台Linux ,設定 dhcp 跟 NAT : PCA : Linux <---> : PCB : Linux WAN ip 1.2.3.4 : LINUX LAN ip 192.168.1.1 : PCA ip 192.168.1.2 : PCB ip 192.168.1.3 : PCA上面裝了 http server : AP 設定 Port Forward 到 PCA : 我希望能從PCB 打 AP的 WAN IP 就能存取 PCA的網頁 : 1. iptables -t nat -I PREROUTING -i br0 -d 1.2.3.4 -j DNAT --to 192.168.1.2 : 2. iptables -t nat -I POSTROUTING -s 192.168.1.1/24 -o br0 -d 192.168.1.2 -j SNAT --to 192.168.1.1 : iptables -L -vn -t nat 看到 1. pkg 會增加 但是 2.pkg 不會增加 : ip_forward 1 : 請各位指點一下迷津 謝謝 我後來想一想,封包不經過 rule 2 是合理的, 因為在 PREROUTING 時,該筆連線已經記錄於 connection tracking table 裡了, 該連線之後的封包在連線追蹤機制下,都不會經過 rule 1 及 rule 2, 且,網路的區段規劃為 PCA 與 PCB 都在同一個網段中, 所以若 PCB 連線至 AP,再導向給 PCA, 封包 IP 位址的變化應為 : PCB 送出 PCA 收到 [SRC IP: PCB/DST IP: AP] [SRC IP: PCB/DST IP: PCA] 因此,由於SRC IP: PCB 與 PCA 是同網段, PCA 應在 ARP table 中即能得知 PCB 的 MAC/IP, 一般就不會送給 default route gateway AP,而是直接送給 PCB 但是 PCB 收到的封包位址變成這樣 [ SRC IP: PCA/DST IP: PCB ] PCB 不會知道這個封包是原本送給 AP 的回應 [SRC IP: PCB/DST IP: AP] , 照理說,這樣網頁應該是不會通。 應該將 PCB 與 PCA 的 IP 規劃為不同的子網路或網段。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.176.17
lukedoomer:所以是不可行?我也想知道,要不然都要依照網路環境決 02/18 15:59
lukedoomer:定打lan ip或wan ip,覺得沒辦法一致性。 02/18 15:59
danny8376:所以說才有人搞出masquerade這東西啊... 02/18 17:16
danny8376:如果NAT是正常運作(會有port forwarding意味著正常吧?) 02/18 17:17
danny8376:那PCA收到時SRC早被GW的NAT機制替換成AP自身的內網IP了 02/18 17:18
danny8376:不過如果原原PO真的沒設masquerade就當我沒說了(默 02/18 17:20
guest1024:我認為因同網段,PCA本身Route回應封包時就會直接繞給PCB 02/18 22:45
guest1024:所以我覺得是不會通。 02/18 22:46
guest1024:因為PCA的封包沒有先繞給AP改IP 02/18 22:46
NKill:預期是會做DNAT+SNAT 然後才送出,我用比較新的 Linux測是可 02/19 15:27