我所在的公司为机器人设备制造服务器机箱。机器人通过以太网连接与 ubuntu 服务器通信,并要求服务器具有静态 IP 地址。机器人和服务器通过以太网交换机专门连接,该交换机也连接到系统的互联网源。困难在于,我们无法保证机器人子网和路由器子网重叠。为了解决这个问题,我们想建立一个具有两个虚拟 IP 地址的以太网连接:一个应该是静态的,用于机器人,另一个应该使用 DHCP 并连接到互联网。
我发现这个答案在堆栈交换上,但它只有一半起作用。
这是我的配置:
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: yes
dhcp6: no
addresses:
- 192.168.1.51/24
当我运行sudo netplan try
并ip address show eno1
在新终端中时,我看到:
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether c8:5a:cf:b2:f9:89 brd ff:ff:ff:ff:ff:ff
altname enp2s0
inet 192.168.1.51/24 brd 192.168.1.255 scope global eno1
valid_lft forever preferred_lft forever
inet 192.168.3.98/24 brd 192.168.3.255 scope global dynamic eno1
valid_lft 86397sec preferred_lft 86397sec
inet6 fe80::e6f:6cd2:29bc:f8be/64 scope link noprefixroute
valid_lft forever preferred_lft forever
这似乎是正确的,而且服务器确实能够连接到机器人。此外,我们甚至可以 ping 路由器。但是,它实际上无法连接到互联网。另一方面,当我从 xdg 连接 UI 使用标准 DHCP 时,我得到了相同的 IP 地址,并且能够建立连接。
那么我的问题是,我做错了什么?我该如何解决这个问题?还有更好的方法吗?
谢谢您的帮助!
答案1
您的 netplan 文件同时请求 DHCP 地址和静态地址;显然存在冲突。我建议您检查此处:
cat /usr/share/doc/netplan/examples/static.yaml
您将在那里找到在 Netplan 中设置静态 IP 地址的模板。相应地修改您的文件并执行以下操作:
sudo netplan generate
sudo netplan apply
一切已准备就绪。
答案2
事实证明,原始解决方案确实有效。我买了一本网络教科书,里面称赞了一款名为 cockpit 的软件,所以我下载了它,很快就开始运行。原来是有人在网络0.0.0.0
配置中添加了一个 DNS 服务器地址(可能是之前构建的配置或其他什么?),我只是从 cockpit UI 中删除了网关,它就正常工作了。静态 DNS 地址可能覆盖了 DHCP 地址,并阻止服务器访问网络。这也适用于另外两台服务器,所以希望我可以放心,因为我知道这个解决方案是可靠的。
对于那些在网上寻找网络解决方案的人来说,我强烈推荐座舱. 它对于调试服务器非常有用。