Linux 作為網關(無 NAT)
我正在嘗試將 linux 伺服器配置為網關/路由器,但我無法讓它工作,而且我設法找到的所有資訊都與 NAT 相關。
我有一個用於網關和它後面的設備的公共 IP 塊,所以我希望網關簡單地將數據包路由到網際網路 - 再次:沒有 NATing!
我已經設法讓網關成功訪問網際網路(這只是配置IP和GW的問題),並且它後面的電腦可以與之通信。
$$ EDIT: more info $$
這實際上是一個 IPv6 塊 (
2800:40:403::0/48
)(但我發現大多數實用程序和指令都可以輕鬆地從 IPv4 調整到 IPv6)。伺服器有太多埠:
- wan:
2800:40:403::1/48
- 和:
2800:40:403::3/48
它後面的一台電腦通過交換機連接到它;
2800:40:403::7/48
伺服器上的 wan 介面可以 ping6 www.google.com 沒有問題。伺服器和客戶端上的 lan 介面可以相互 ping 通而不會出現問題(以及 SSH 等)。
我嘗試將伺服器設置為客戶端的預設網關,但沒有成功:
client # route -A inet6 add default gw 2800:40:403::3 dev eth1 server # cat /proc/sys/net/ipv6/conf/all/forwarding 1
我不想要任何過濾/防火牆/等,只是簡單的路由。
謝謝。
我假設您的 WAN 端有一個公共 IP 地址,LAN 端有一個塊,如下所示:
ISP-----ROUTER ETH0/ROUTER ETH1------SWITCH------PCs
您需要有一個 WAN 介面的公共 IP 地址,ISP 將通過此 IP 地址路由他們為您提供的子網
只需將轉發位設置為 1
echo 1 > /proc/sys/net/ipv4/ip_forward
要使其持久化,您需要編輯 /etc/sysctl.conf,找到這一行:
net.ipv4.ip_forward=0
並將其更改為
net.ipv4.ip_forward=1
如果有評論,請務必取消評論。
現在,您需要做的就是將您的 PC 的預設網關設置為指向 linux 路由器,並假設 ISP 已通過您的 lan 端的公共 IP 地址路由塊來完成他們的工作。
現在。如果您所擁有的只是一個公共地址塊……您不是在尋找路由,只需將 ISP 連接到交換機並將所有 PC 連接到交換機,就應該完成。如果您可以指定更多詳細資訊,我們可能會為您提供更多幫助。
編輯:
你說你的介面配置如下:
wan: 2800:40:403::1/48 lan: 2800:40:403::3/48
你的預設網關是什麼?我猜是 2800:40:403::2/48
它不應該真的像這樣工作。我還沒有使用 IPv6,但是你在一個子網中有兩個介面,我想我會允許你配置它,但是說 Cisco 路由器至少會警告你重疊
最簡單的解決方案是所有 PC 都連接到連接到 ISP 的交換機。
真正的解決方案是告訴 ISP 在其 WAN 地址空間上為您提供 1 個公共地址,並通過該地址路由塊。然後你所要做的就是配置:
wan: ip-from-their-space lan: 2800:40:403::1/48
並且所有區域網路 PC 都應該預設指向那個。
您有一個非常大的地址空間,您可以做的是進一步子網劃分它。
編輯:
如果你真的想橋接介面,你可以在沒有任何 IP 相關的情況下做到這一點。這樣,您將只有一個具有 IP 地址的介面。
你需要做的就是安裝bridge-utils,然後你可以這樣配置它:
ip add flush dev eth0 ip add flush dev eth1 brctl addbr br0 brctl addif br0 eth0 eth1 ip link set dev br0 up
然後在 br0 上配置您的 IPv6 地址,現在您有了一個透明網橋。它仍然不能解決您的 IPv4 問題,但您可以通過以下方式解決:
在 br0 上配置 IPv4 公有地址和私有地址,並以這種方式進行 NAT:
iptables -t nat -A POSTROUTING -j SNAT -s / –to-source