大家早上好。 在我们的networking中,我们有一台具有别名IP地址的Linux机器。 这些IP地址中的每一个都位于由远程路由器控制的ISPnetworking上。
我们希望使用我们的Linux机箱作为内部networking(10.0.0.x)和Linux机箱的网关,然后将传出的stream量转发到另一个networking上的其中一台路由器。
我读过的所有东西都是关于两个物理接口卡之间的伪装。 但是我们只有一个网卡,监听多个IP地址。
在Linux的盒子本身; 它可以使用其中一个路由器作为上游网关来ping和访问互联网。
所以我们的configuration如下:
: 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子网上的数据包,并将它们路由到为网关configuration的特定IP地址。 当我尝试使用eth0:1作为我的-d然后iptables抱怨无效的字符,并从我在互联网上阅读,这是禁用的iptables( http://lkml.indiana.edu/hypermail/linux/net/9705.1 /0016.html )。
有人可以帮忙吗? 我确信我错过了一些真正明显的东西。 我所有的历史知识都是两个独立的ethXnetworking接口。
谢谢
更新; 这里是“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用于 – 目标,并期望地址(或networking)。 如果目的地是“任何”,那么不要指定它。
redirect不会执行NAT。
在使用别名时,使用-i和-o不起作用。 解决方法是使用-d和-s。 你可以用“!”否定。 因此,对于所有来自10.0.0.0/24的stream量,其目标地址不是10.0.0.0/24,请进行伪装:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24! -d 10.0.0.0/24 -j MASQUERADE