所以我遇到了以下问题。有一台专用的 Ubuntu 18.04 主机,应该为其分配一个静态 IP 地址。有两个接口,eth0 和 eth1。
eth0 通过 DHCP 从主机获取其地址。从同一主机,我们获得了另一个静态 IP 地址,我们应该在服务器上配置它。因此,netplan 配置如下所示:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: yes
eth1:
dhcp4: no
dhcp6: no
addresses: [$STATIC_IP/32]
nameservers:
addresses: [8.8.4.4,8.8.8.8]
当我netplan apply
,ip a
节目
37: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
group default qlen 1000
link/ether ac:1f:6b:85:51:86 brd ff:ff:ff:ff:ff:ff
inet $DHCP_IP/32 scope global dynamic eth0
valid_lft 85932sec preferred_lft 85932sec
inet6 fe80::ae1f:6bff:fe85:5186/64 scope link
valid_lft forever preferred_lft forever
65: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state
DOWN group default qlen 1000
link/ether ac:1f:6b:85:51:87 brd ff:ff:ff:ff:ff:ff
因此 eth1 似乎根本没有配置。
Syslog 说:systemd-networkd[27425]: eth1: IPv6 successfully enabled
networkd-dispatcher[10223]: WARNING:Unknown index 66 seen, reloading interface list
我搜索了那个警告,但没有找到任何可以帮助我的东西。
这是问题的第一部分,因为我可以用 分配一个地址ip addr add $STATIC_IP dev eth1
。接口仍然显示为 DOWN,但我可以从外部 ping 它:
65: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state
DOWN group default qlen 1000
link/ether ac:1f:6b:85:51:87 brd ff:ff:ff:ff:ff:ff
inet $STATIC_IP/32 scope global eth1
valid_lft forever preferred_lft forever
到目前为止,一切都很好。
当我尝试设置路由时,此接口被使用,随后显示为发送方 IP,我得到以下信息。请注意,我不确定网关地址,但我可以 ping 它:
$ ip addr add default via $STATIC_IP_GATEWAY table staticip
结果是Error: Nexthop has invalid gateway.
我尝试了各种其他组合,但此时,我感到很困惑,不知道这是我的能力不足还是主机提供商的能力不足。
简而言之:我得到了一个静态 IP,并想将其用作接口,以便当我从该服务器联系某些东西时,该静态 IP 显示为原始地址。
我遗漏了什么?通常是怎么做的?
提前致谢,我很乐意根据需要提供更多信息。
答案1
最后我终于搞定了,配置一个接口有两个 IP 地址:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: yes
addresses: [$STATIC_IP/32]
然后添加一个 iproute 表:
echo "mytable >> /etc/iproute2/rt_tables
添加规则:
ip rule add from all lookup mytable
向表中添加一条路线:
ip route add default via $DHCP_GATEWAY src $STATIC_IP table mytable
也许有人会发现它很有用。