为什么我不能通过私有网络中的vlan访问互联网?

为什么我不能通过私有网络中的vlan访问互联网?

正如标题所示,我在设置网络以便服务器能够访问互联网时遇到了问题。请耐心等待我布置基础设施。

所有 3 个服务器均由赫茨纳。网关和服务器 1 是云服务器,而服务器 2 是通过 vSwitch 连接的专用服务器。以下是有关此设置的一些文档:连接专用服务器 (vSwitch)

服务器1和服务器2不应该有公共IP地址,并且所有流量都通过网关。

所有端口 53 (DNS) 请求都被路由到网关。

我的电脑与专用网络之间有有效的 VPN 连接。

Network         10.1.0.0/16

Static Route    0.0.0.0/0 -> 10.1.0.2

Subnet          10.1.0.0/24
                        Gateway 10.1.0.2 (pfSense - OpenVpn, DnsResolver)
                        Server1 (Cloud) 10.1.0.3 
                        
Subnet          10.1.1.0/24
                        
                        Server2 (Dedicated) 10.1.1.3

服务器 1

Ubuntu 22.04

  • 可通过 VPN 访问
  • 可以 ping/访问 10.1.0.1、10.1.0.2、10.1.1.3
  • 可以 ping 或访问互联网
  • 可以解析任何域(通过 pfSense DNS 解析器解析外部域和网络内部域)
ip route
default via 10.1.0.1 dev enp7s0 proto static onlink
10.1.0.0/16 via 10.1.0.1 dev enp7s0 proto dhcp src 10.1.0.3 metric 100
10.1.0.1 dev enp7s0 proto dhcp scope link src 10.1.0.3 metric 100
169.254.169.254 via 10.1.0.1 dev enp7s0 proto dhcp src 10.1.0.3 metric 100

网络计划

network:
  version: 2
  renderer: networkd
  ethernets:
    enp7s0:
      dhcp4: true
      routes:
        - to: default
          via: 10.1.0.1
      nameservers:
        addresses:
          - 10.1.0.2
          - 8.8.4.4
          - 8.8.8.8
tracepath -n 10.1.1.3
1?: [LOCALHOST]         pmtu 1450
1:  10.1.0.1            2.623ms
1:  10.1.0.1            1.490ms
2:  169.254.255.255     1.934ms asymm  1
3:  10.1.1.3            25.501ms reached
    Resume: pmtu 1450 hops 3 back 2
tracepath -n google.com
 1?: [LOCALHOST]    pmtu 1450
 1:  10.1.0.1
 1:  10.1.0.1
 2:  10.1.0.2
 3:  172.31.1.1

服务器 2

Ubuntu 22.04

  • 可通过 VPN 访问
  • 可以 ping/访问 10.1.0.2、10.1.0.3
  • 无法 ping 10.1.1.1
  • 无法 ping/访问互联网
  • 可以解析任何域(通过 pfSense DNS 解析器解析外部域和网络内部域)
ip route
default via 10.1.1.1 dev enp2s0.4000 proto static
10.1.1.0/24 dev enp2s0.4000 proto kernel scope link src 10.1.1.3

网络计划

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0: {}
vlans:
  enp2s0.4000:
    id: 4000
    link: enp2s0
    mtu: 1400
    addresses:
      - 10.1.1.3/24
    routes:
      - to: default
        via: "10.1.1.1"
    nameservers:
      addresses:
        - 10.1.0.2
        - 8.8.4.4
        - 8.8.8.8
tracepath -n 10.1.0.3
1?: [LOCALHOST]     pmtu 1400
1:  10.1.1.1        0.393ms
1:  10.1.1.1        0.364ms
2:  10.1.0.3        25.265ms reached
    Resume: pmtu 1400 hops 2 back 3
tracepath -n google.com
1?: [LOCALHOST] pmtu 1400
1:  no reply

如您所见,我遇到的问题在于专用服务器(服务器 2),它似乎无法连接到其子网网关(10.1.1.1)及更远的网段,但它可以正常连接到私有网络中的其他服务器。

也许我看错了?

答案1

在与一位在该领域经验丰富的人交谈后,他向我介绍了文档部分。

他的假设是 vSwitch 只允许私有网络内部的流量通过并阻止其他所有流量。

干净的解决方案是将专用服务器(服务器 2)连接到与10.1.0.0/24我的 pfSense 网关相同的子网(),但 Hetzner 不允许这样做。

解决方法是使用Wireguard

  1. 在 pfSense 中设置 Wireguard,打开接口10.2.0.1/24,并与端点建立专用对等体10.1.1.3
  2. 在专用服务器上设置 Wireguard,开启接口10.2.0.2/24,并将 pfSense 与端点对等10.1.0.2

由于私有流量在两者之间工作,因此 Wireguard 端点可以是私有 IP。

  1. 允许从 pfSense 中的 Wireguard 接口到任何来源的所有流量

  2. 在专用服务器上设置以下 netplan,以仅通过 Wireguard 隧道路由非私有 IP

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0: {}
vlans:
  enp2s0.4000:
    id: 4000
    link: enp2s0
    mtu: 1400
    addresses:
      - 10.1.1.3/24
    routes:
      - to: 10.1.0.0/16
        via: 10.1.1.1
        on-link: true
      - to: 10.1.1.0/24
        via: 10.1.1.1
        on-link: true
      - to: default
        via: 10.2.0.1
        on-link: true
    nameservers:
      addresses:
        - 10.1.0.2
        - 8.8.4.4
        - 8.8.8.8

奇迹般有效!

相关内容