正如标题所示,我在设置网络以便服务器能够访问互联网时遇到了问题。请耐心等待我布置基础设施。
所有 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:
- 在 pfSense 中设置 Wireguard,打开接口
10.2.0.1/24
,并与端点建立专用对等体10.1.1.3
- 在专用服务器上设置 Wireguard,开启接口
10.2.0.2/24
,并将 pfSense 与端点对等10.1.0.2
由于私有流量在两者之间工作,因此 Wireguard 端点可以是私有 IP。
允许从 pfSense 中的 Wireguard 接口到任何来源的所有流量
在专用服务器上设置以下 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
奇迹般有效!