无法从互联网 ping 通辅助 IP - 在 Hetzner 服务器上使用 netplan 的 Ubuntu 20.04

无法从互联网 ping 通辅助 IP - 在 Hetzner 服务器上使用 netplan 的 Ubuntu 20.04

首先我要说的是,我不是网络专家。话虽如此,我需要一些帮助,因为我已经为这个问题绞尽脑汁两天了。我有几个问题,但只关注一个特定的问题。

我订购了一台 hetzner 根服务器并安装了 Ubuntu 20.04。我订购了辅助 IP,因为我需要它用于我的 docker 设置,我希望两个容器可以直接在这两个 IP 地址上访问?这两个 IP 地址都是 Hetzner 分配的 /32 公共地址。我的主 IP 地址可以从互联网访问,我可以从外部 ping 它。

请求第二个 IP 后,我收到了 Hetzner 发来的一封邮件,告知我订单成功,我可以配置第二个 IP。我在 Hetzner 文档中读到,这应该很简单,只需将第二个 IP 地址添加到addresses中的部分/etc/netplan/01-netcfg.yaml即可。此文件现在如下所示:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp9s0:
      addresses:
        - 50.50.50.201/32
        - 50.50.50.199/32
      routes:
        - on-link: true
          to: 0.0.0.0/0
          via: 50.50.50.193
      nameservers:
        addresses:
          - ...

保存文件后,我立即运行netplan try,报告成功并点击enter保存新配置。运行后,ip addr我得到:

...
2: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether a8:a1:22:1f:22:82 brd ff:ff:ff:ff:ff:ff
    inet 50.50.50.201/32 scope global enp9s0
       valid_lft forever preferred_lft forever
    inet 50.50.50.199/32 scope global enp9s0
       valid_lft forever preferred_lft forever
...

现在我可以从服务器成功 ping 第二个 IP (.199),但不能从 www ping 通。有人知道为什么会这样吗?我想确保我的第二个 IP 也可以从网络访问。我在这个配置中缺少什么?提前谢谢!

编辑: 我正在运行 docker,但此时,我在此处所述的所有内容都在主机中。因此 Docker 尚未参与...

ip -br link给我:

$ ip -br link
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
enp9s0           UP             a8:a1:22:1f:22:82 <BROADCAST,MULTICAST,UP,LOWER_UP> 
docker0          DOWN           02:42:f8:c5:ee:a9 <NO-CARRIER,BROADCAST,MULTICAST,UP>
br-ef57c188e0de  DOWN           02:42:dc:79:c6:f6 <NO-CARRIER,BROADCAST,MULTICAST,UP>

和...

$ ip -4 -br address
lo               UNKNOWN        127.0.0.1/8 
enp9s0           UP             50.50.50.201/32 50.50.50.199/32 
docker0          DOWN           172.17.0.1/16
br-ef57c188e0de  DOWN           172.18.0.1/16

和...

$ ip route
default via 50.50.50.193 dev enp9s0 proto static onlink 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-ef57c188e0de proto kernel scope link src 172.18.0.1 linkdown 

和...

$ ip rule
0:  from all lookup local
32766:  from all lookup main
32767:  from all lookup default

和...

$ ip neigh
172.18.0.2 dev br-ef57c188e0de  FAILED
50.50.50.193 dev enp9s0 lladdr a8:a1:22:1f:22:82 REACHABLE
fe80::1 dev enp9s0 lladdr a8:a1:22:1f:22:82 router STALE

最后……

$ iptables-save -c
# Generated by iptables-save v1.8.4 on Sat May 14 17:40:11 2022
*filter
:INPUT ACCEPT [1021:88276]
:FORWARD DROP [233:12218]
:OUTPUT ACCEPT [920:161517]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
[12631:643908] -A FORWARD -j DOCKER-USER
[12631:643908] -A FORWARD -j DOCKER-ISOLATION-STAGE-1
[105:5500] -A FORWARD -o br-ef57c188e0de -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[0:0] -A FORWARD -o br-ef57c188e0de -j DOCKER
[6:324] -A FORWARD -i br-ef57c188e0de ! -o br-ef57c188e0de -j ACCEPT
[0:0] -A FORWARD -i br-ef57c188e0de -o br-ef57c188e0de -j ACCEPT
[521962:778892991] -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[0:0] -A FORWARD -o docker0 -j DOCKER
[132612:7158451] -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
[0:0] -A FORWARD -i docker0 -o docker0 -j ACCEPT
[6:324] -A DOCKER-ISOLATION-STAGE-1 -i br-ef57c188e0de ! -o br-ef57c188e0de -j DOCKER-ISOLATION-STAGE-2
[132612:7158451] -A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
[686521:790836880] -A DOCKER-ISOLATION-STAGE-1 -j RETURN
[0:0] -A DOCKER-ISOLATION-STAGE-2 -o br-ef57c188e0de -j DROP
[0:0] -A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
[132618:7158775] -A DOCKER-ISOLATION-STAGE-2 -j RETURN
[709846:791932195] -A DOCKER-USER -j RETURN
COMMIT
# Completed on Sat May 14 17:40:11 2022
# Generated by iptables-save v1.8.4 on Sat May 14 17:40:11 2022
*nat
:PREROUTING ACCEPT [585:28528]
:INPUT ACCEPT [357:16571]
:OUTPUT ACCEPT [12:720]
:POSTROUTING ACCEPT [12:720]
:DOCKER - [0:0]
[25260:1227195] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
[3:252] -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
[3:180] -A POSTROUTING -s 172.18.0.0/16 ! -o br-ef57c188e0de -j MASQUERADE
[64:3912] -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
[0:0] -A DOCKER -i br-ef57c188e0de -j RETURN
[0:0] -A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sat May 14 17:40:11 2022

此外,我还没有在 Hetzner 端设置任何防火墙规则。感谢您的时间!

答案1

感谢大家的帮助,特别是AB

ping 仍然不起作用。我阅读了所有 Hetzner 文档,但找不到任何线索,直到我偶然发现了这篇文章Hetzner 附加 IP。我之前已经激活了我请求的附加 IP 的 MAC 地址,因为我认为有必要在 docker 中创建一个 macvlan。我禁用虚拟 MAC 地址在 Hetzner 服务器门户中,现在我可以从其他 IP ping 出并发送到其他 IP。我尚未弄清楚的事情在另一篇文章中描述:为docker容器分配32个ip地址。任何帮助都欢迎。干杯!

相关内容