在 Ubuntu 上使用专用网络接口的网关

在 Ubuntu 上使用专用网络接口的网关

我在 Ubuntu 16.04 VM 上有一个专用网络接口,如下所示:

# Private network
auto ens19
iface ens19 inet static
    address 10.10.10.179
    netmask 255.255.255.0
    mtu 1450

我的 vLAN 需要指定网关才能正常工作,因此我按如下方式附加它:

# Private network
auto ens19
iface ens19 inet static
    address 10.10.10.179
    netmask 255.255.255.0
    mtu 1450
    gateway 10.10.10.1

但是,每当我添加该网关并重新启动networking服务时,它都不会以以下错误启动:

Dec 15 10:50:08 postfix0 ifup[1968]: RTNETLINK answers: File exists
Dec 15 10:50:08 postfix0 ifup[1968]: Failed to bring up ens19.

执行ip addr flush dev xxx并没有帮助。

那么,我该如何解决这个问题呢?

答案1

创建命名路由表。 pvtnet 这个名称是任意的。如果 DHCP 在 10.10.10 网络上分发地址,则此操作将不起作用。

echo '200 pvtnet' >> /etc/iproute2/rt_tables

修改文件,/etc/network/interfaces.

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# DHCP hands out the DEFAULT gateway.
auto eth0 # use the real device name on your system
allow-hotplug eth0
iface eth0 inet dhcp

# The private network interface
auto ens19
allow-hotplug ens19
iface ens19 inet static
address 10.10.10.179
netmask 255.255.255.0
mtu 1450
post-up ip route add 10.10.10.0/24 dev ens19 src 10.10.10.179 table pvtnet
post-up ip route add default via 10.10.10.1 dev ens19 table pvtnet
post-up ip rule add from 10.10.10.179/32 table pvtnet
post-up ip rule add to 10.10.10.179/32 table pvtnet

相关内容