我有一個 Linux 盒子,充當路由器、DHCP 伺服器和代理。在我的 LAN 端,我需要兩個子網路才能擁有足夠的 IP:192.168.100.0 - 192.168.101.255 - 是我需要的範圍。兩個子網路都必須能夠透過我的 Linux 盒子存取互聯網,
在 eth1 (em1) 上,我將網際網路數據機與靜態 IP 連接。
在 eth2 (em2) 上,我使用以下設定連接了 LAN:
- IP位址:192.168.100.1
- 廣播位址:192.168.101.255
- 子網路遮罩:255.255.254.0
- 預設閘道:192.168.100.1
我的路由表如下:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 56343ffe.rev.st 0.0.0.0 UG 0 0 0 em1
86.52.0.0 * 255.255.192.0 U 1 0 0 em1
192.168.100.0 * 255.255.254.0 U 1 0 0 em2
192.168.101.0 * 255.255.255.0 U 0 0 0 em2
來自連接埠 80 的所有流量都會重定向到我在 shorewall 中的代理 - 這工作正常 - 所有主機都可以訪問網站、YouTube 等(連接埠 80)。所有其他流量都是偽裝的 - 但到其他連接埠的流量是一個問題 - 例如 Microsoft 的 DRM 許可證伺服器 AVG 更新伺服器 - 無法存取!但我相信路由表中有些東西配置錯誤?我的防火牆在重定向連接埠 80 流量後接受所有出站流量。
編輯 - 來自我的防火牆的輸出(我已將互聯網地址中的數字替換為 xxx.xxx):
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
dnat all -- anywhere anywhere
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
em1_masq all -- anywhere anywhere
Chain dnat (1 references)
target prot opt source destination
loc_dnat all -- anywhere anywhere
Chain em1_masq (1 references)
target prot opt source destination
SNAT all -- 192.168.100.0/24 anywhere to:86.52.xxx.xxx
SNAT all -- 192.168.101.0/24 anywhere to:86.52.xxx.xxx
Chain loc_dnat (1 references)
target prot opt source destination
REDIRECT tcp -- 192.168.100.0/24 anywhere multiport dports http,squid redir ports 8080
REDIRECT tcp -- 192.168.101.0/24 anywhere multiport dports http,squid redir ports 8080
答案1
您必須對它們進行 NAT(偽裝)。
然後你就失敗了。
你說它是偽裝的,但顯然這是行不通的。
(連接埠 80 確實可以工作,因為它被代理了。)
NAT 或防火牆(可能兩者)上的某些配置不正確。
PS 你不需要最後一條路由線。它已經被上面的覆蓋了。