Ubuntu IP 转发到虚拟以太网适配器

Ubuntu IP 转发到虚拟以太网适配器

我已经设置了 Ubuntu 服务器并设置了 ufw 作为防火墙。

首先,我有两个网络:

公众:66.xxx.xxx.70 - 66.xxx.xxx.78

私人:192.168.3.1 - 192.168.3.255

我的网络配置:

auto eth0
iface eth0 inet static
        address 66.xxx.xxx.70
        netmask 255.255.255.0
        network 66.xxx.xxx.0
        broadcast 66.xxx.xxx.255
        gateway 66.xxx.xxx.1


auto eth0:0
iface eth0:0 inet static
        address 66.xxx.xxx.71
        netmask 255.255.255.0
        broadcast 66.xxx.xxx.255
        network 66.xxx.xxx.0

auto eth0:1
iface eth0:1 inet static
        address 66.xxx.xxx.72
        netmask 255.255.255.0
        broadcast 66.xxx.xxx.255
        network 66.xxx.xxx.0

auto eth0:2
iface eth0:2 inet static
        address 66.xxx.xxx.73
        netmask 255.255.255.0
        broadcast 66.xxx.xxx.255
        network 66.xxx.xxx.0

auto eth0:3
iface eth0:3 inet static
        address 66.xxx.xxx.74
        netmask 255.255.255.0
        broadcast 66.xxx.xxx.255
        network 66.xxx.xxx.0

auto eth0:4
iface eth0:4 inet static
        address 66.xxx.xxx.75
        netmask 255.255.255.0
        broadcast 66.xxx.xxx.255
        network 66.xxx.xxx.0

auto eth0:5
iface eth0:5 inet static
        address 66.xxx.xxx.76
        netmask 255.255.255.0
        broadcast 66.xxx.xxx.255
        network 66.xxx.xxx.0

auto eth0:6
iface eth0:6 inet static
        address 66.xxx.xxx.77
        netmask 255.255.255.0
        broadcast 66.xxx.xxx.255
        network 66.xxx.xxx.0

auto eth0:7
iface eth0:7 inet static
        address 66.xxx.xxx.78
        netmask 255.255.255.0
        broadcast 66.xxx.xxx.255
        network 66.xxx.xxx.78

auto eth1
iface eth1 inet static
        address 192.168.3.3
        netmask 255.255.255.0
        broadcast 192.168.3.255
        network 192.168.3.0

我开始创建防火墙来限制所有传入流量并允许所有传出流量:

sudo ufw default deny
sudo ufw allow from 192.168.3.0/24

从那时起,我努力进行 IP 转发设置,但设法找到了四行有效的代码(我创建了一个启动脚本,但抽象了以下内容):

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

好的,此时一切正常。我可以设置 192.168.3.* 网络上的任何机器,以使用此 Ubuntu 服务器作为网络网关 (192.168.3.3),然后我可以路由到互联网,浏览网页并验证我的 IP 是 66.xxx.xxx.70。

现在,我尝试将接口更改为 eth0:7(在启动时重新启动,甚至删除启动并手动运行它),这样我的 IP 就是 66.xxx.xxx.78,但是在我运行脚本后,IP 转发不起作用,我无法 ping 通,tracert 在 192.168.3.3 停止,当然我无法浏览网页。

虽然我可以切换主 IP 地址来解决问题,但我想知道哪里出了问题,为什么我不能指定 eth0:7 以及如何修复它。我是 Linux 新手,所以我很挣扎。任何帮助都将不胜感激。

答案1

事实证明,iptables 不支持虚拟 ip 别名(eth0:7)。

为了解决我的问题,我将机器的主 IP 地址设为 66.xxx.xxx.78,并将 .70 绑定到 eth0:7,我的问题就解决了。

因为这是一个 Ubuntu VM,所以我认为我可能只需要添加第三张网卡并将 66.xxx.xxx.78 绑定到它,然后更改我正在转发的适配器。

相关内容