Linux網關:一張網卡如何從一個子網偽裝到另一個子網
大家早上好。在我們的網路中,我們有一台具有別名 IP 地址的 Linux 機器。這些 IP 地址中的每一個都位於由 ISP 的遠端路由器控制的網路上。
我們想使用我們的 Linux 機器作為我們內部網路 (10.0.0.x) 的網關,然後 Linux 機器將傳出流量轉發到另一個網路上的一個路由器。
我讀過的所有東西都是關於兩個物理介面卡之間的偽裝;但是我們只有一張網卡,監聽多個IP地址。
在 Linux 機器本身上;它可以使用其中一台路由器作為上游網關來 ping 和訪問網際網路。
所以我們的配置如下:
: Linux Box eth0:0 = 10.0.0.5 eth0:1 = 192.168.137.5 GW: 192.168.137.1 : Router#1 IP: 192.168.137.1 Connection to internet via ISP : Network Machines IP: 10.0.0.x GW: 10.0.0.5
所以問題是,我在 Linux 機器上的 iptables/nat 設置是什麼,以允許它接受 10.0.0.x 子網上的數據包並將它們路由到為網關配置的特定 IP 地址。當我嘗試使用 eth0:1 作為我的 -d 時,iptables 抱怨無效字元,從我在網際網路上閱讀的內容來看,這在 iptables 中被禁用(http://lkml.indiana.edu/hypermail/linux/net/9705.1 /0016.html )。
有人可以幫忙嗎?我確信我在這裡遺漏了一些非常明顯的東西;我所有的歷史知識都是兩個獨立的 ethX 網路介面。
謝謝你
更新; 這是“hackity”iptables 腳本
WIFIBACKUP=192.168.137.1 iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -F -t nat echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A PREROUTING -s 10.0.0.0/32 -j REDIRECT --to $WIFIBACKUP iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
-d 用於–destination,需要一個地址(或網路)。如果目的地是“任何”,那麼就不要指定它。
重定向不做 NAT。
當您使用別名時,使用 -i 和 -o 不起作用。解決方法是使用-d 和-s。你可以用“!”來否定。因此,對於來自 10.0.0.0/24 且目的地不是 10.0.0.0/24 的所有流量,請進行偽裝:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 !-d 10.0.0.0/24 -j 偽裝