我有一个具有多个网关的网络(gw1
:10.0.0.1
和gw2
:)11.0.0.1
。
我的服务器(Ubuntu 20.04)有一个带有多个地址(eth0:gw1
:10.0.0.55
和eth0:gw2
: 11.0.0.55
)的 NIC。
每个网关都提供互联网访问,并配置了 NAT 规则来转发端口80
和443
到我的服务器。
在我的服务器中,我已经将 nginx 配置为响应两个地址和内部网络,它的工作原理与我预期的一样。
问题是:它不响应来自两个公共 IP(连接超时)的呼叫,而只响应来自默认网关的呼叫。
继Netplan 文档我尝试了几十种配置,但无法从两个公共 IP 获得响应,总是只能从默认 IP 获得响应(它们都有效,我尝试交换它们并一次只使用它们一个来确认)。
我不是网络工程师,所以我不知道这是否可以做到。可能吗?
我的实际 netplan 配置:
network:
version: 2
ethernets:
eth0:
dhcp4: false
optional: true
addresses:
- 10.0.0.55/24:
label: "eth0:gw1"
- 11.0.0.55/24:
label: "eth0:gw2"
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
- 8.8.8.8
- 8.8.4.4
routes:
- to: default
via: 10.0.0.1
- to: default
via: 10.0.0.1
metric: 200
table: 101
- to: default
via: 11.0.0.1
metric: 200
table: 102
routing-policy:
- to: 10.0.0.0/24
from: 10.0.0.0/24
table: 101
- to: 11.0.0.0/24
from: 11.0.0.0/24
table: 102
我不知道我的配置中是否需要更多或更少的选项(例如:routing-policy
?)
答案1
您的政策规则似乎不正确。您有:
routing-policy:
- to: 10.0.0.0/24
from: 10.0.0.0/24
table: 101
- to: 11.0.0.0/24
from: 11.0.0.0/24
table: 102
但对于来自外部您的本地网络,源地址将不是来自10.0.0.0/24
;它将是互联网上某个远程客户端的地址。在典型配置中,您的网关不会伪装入站交通;他们只是伪装出站流量,以便回复看起来源自网关而不是来自内部服务器。
这意味着您的to: ...
规则永远不会匹配。您只应使用from: ...
(即来自 的服务器的回复的源地址x.0.0.55/24
)进行匹配。
我认为你需要:
network:
version: 2
ethernets:
eth0:
dhcp4: false
optional: true
addresses:
- 10.0.0.55/24:
label: "eth0:gw1"
- 11.0.0.55/24:
label: "eth0:gw2"
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
- 8.8.8.8
- 8.8.4.4
routes:
- to: default
via: 10.0.0.1
- to: default
via: 10.0.0.1
metric: 200
table: 101
- to: default
via: 11.0.0.1
metric: 200
table: 102
routing-policy:
- from: 10.0.0.0/24
table: 101
- from: 11.0.0.0/24
table: 102