正如标题所示,我在设置网络时遇到问题,以便服务器可以访问互联网。在我布置基础设施时请耐心等待。
所有 3 台服务器均由Hetzner托管。网关和服务器 1 是云服务器,而服务器 2 是通过 vSwitch 连接的专用服务器。以下是有关此设置的一些文档:Connect Dedicated Servers (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)及以后,但它可以连接到私有中的其他服务器网络就好了。
也许我看错了东西?
在有机会与在该领域有丰富经验的人交谈后,他向我指出了文档的这一部分。
他的假设是 vSwitch 只允许专用网络内部的流量通过并阻止其他一切。
干净的解决方案是将专用服务器(服务器 2)连接到
10.1.0.0/24
与我的 pfSense 网关相同的子网 ( ),但 Hetzner 不允许这样做。解决方法是使用Wireguard:
10.2.0.1/24
并使用端点设置专用对等体10.1.1.3
10.2.0.2/24
并在端点上设置 pfSense 对等体10.1.0.2
由于私有流量在两者之间工作,Wireguard 端点可以是私有 ips。
允许所有流量从 pfSense 中的 Wireguard 接口流向任何来源
在专用服务器上设置以下 netplan 以仅通过 Wireguard 隧道路由非私有 ip
奇迹般有效!