Linux

Linux 作為網關(無 NAT)

  • February 11, 2013

我正在嘗試將 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

引用自:https://serverfault.com/questions/400395