在 Ubuntu 20.04 中路由 IP 地址

在 Ubuntu 20.04 中路由 IP 地址

我在私有网络上有几台服务器,每台服务器都分配了一个私有 IP 地址和一个公共 IP。我希望这些服务器仅使用其私有 IP 地址相互通信。

我已经使用 Netplan 设置了 IP 地址,但现在正在尝试设置路由,以便如果服务器 A 尝试与服务器 B 通信,则它通过服务器 A 的私有 IP 进行通信,而不是通过分配给服务器的任何其他 IP 进行通信。

这是我目前的 Netplan 配置文件(为了安全起见,我已经 XXX 掉了部分公共 IP 地址):

network:
  ethernets:
    ens160:
      addresses:
      - 217.147.XXX.43/26
      - 172.17.1.151/24
      dhcp4: false
      #gateway4: 217.147.XXX.1
      #gateway4: 172.17.1.1
      nameservers:
        addresses:
        - 172.17.1.2
        - 172.17.1.3
        - 8.8.8.8
        search: []
      routes:
      - to: 0.0.0.0/0
        via: 217.147.XXX.1
        metric: 100
      - to: 172.17.1.0/24
        via: 172.17.1.1
        metric: 101
  version: 2

命令的输出ip route

$ ip route
default via 217.147.XXX.1 dev ens160 proto static metric 100 
172.17.1.0/24 dev ens160 proto kernel scope link src 172.17.1.151 
172.17.1.0/24 via 172.17.1.1 dev ens160 proto static metric 101 
217.147.XXX.0/26 dev ens160 proto kernel scope link src 217.147.XXX.43 

ifconfig 命令的输出:

$ ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 217.147.XXX.43  netmask 255.255.255.192  broadcast 217.147.XXX.63
        inet6 fe80::2cc:29cc:fef5:966f  prefixlen 64  scopeid 0x20<link>
        ether 00:cc:29:cc:96:6f  txqueuelen 1000  (Ethernet)
        RX packets 728  bytes 71057 (71.0 KB)
        RX errors 0  dropped 119  overruns 0  frame 0
        TX packets 355  bytes 58475 (58.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 102  bytes 8213 (8.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 102  bytes 8213 (8.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我遇到的问题是私人网络不可见。

$ ping 172.17.1.155
PING 172.17.1.155 (172.17.1.155) 56(84) bytes of data.
From 172.17.1.151 icmp_seq=1 Destination Host Unreachable
From 172.17.1.151 icmp_seq=2 Destination Host Unreachable
From 172.17.1.151 icmp_seq=3 Destination Host Unreachable
. . .

可以从私有网络中的其他服务器访问服务器 172.XXX.XXX.155。

任何帮助都将不胜感激。我对网络和 Netplan 还很陌生,并且对官方文档感到很困惑。

答案1

  - to: 172.17.1.0/24
    via: 172.17.1.1
    metric: 101

这是不正确的。172.17.1.0/24 是您的本地网络,您正尝试通过 172.17.1.1 路由其所有流量。该机器可能未配置为在同一接口上路由往返于 172.17.1..0 的流量。如果您删除此路由,则到 172.17.1.155 的流量将改为通过您的本地网络路由,这应该可行。

相关内容