我有以下拓扑
.───────────────.
┌──────────────────┐ _.─' `──.
│ │ ,─' '─.
│ ISP Router │ Dynamic IP ; :
│ with NAT ├─────────────────────────────────────────────────────────: Internet ;
│ │ ╲ ╱
└─────────┬────────┘ '─. ,─'
│ `──. _.─'
│ 10.0.0.1 `──────┬──────'
│ │
.──────┴────. .─────┴─────.
,─' '─. ┌─────────────────────────┐ ,─' '─.
,' `. │ │ ,' `.
; LAN : Static DHCP┌──┴───┐ ┌──┴───┐ Static IP ; Public Net :
: ;─────────────┤ eth1 │ My Server │ eth0 ├────────────: ;
╲ 10.0.0.0/24 ╱ 10.0.0.5 └──┬───┘ └──┬───┘ 1.2.3.5 ╲ 1.2.3.4/20 ╱
`. ,' │ Debian Buster │ mydomain.com `. ,'
'─. ,─' │ │ '─. ,─'
`─────────' └─────────────────────────┘ `─────────'
由于历史原因,我的 ISP 使用单独的网络提供静态 IP。这意味着我必须将我的服务器直接连接到一个直接暴露在互联网上的特殊连接(在图中这是eth0
使用 IP 1.2.3.5
)。
但是,我在家里使用这台服务器作为 NAS,因为那是一个完全独立的网络,所以我使用不同的接口连接它,eth1
并使用 address 创建一个静态 DHCP 分配10.0.0.5
。这样,家庭网络中的其他设备可以找到它并访问网络挂载。
最后,我的域有一个 DNS 记录,在这个例子mydomain.com
中,指向1.2.3.5
.
我遇到了几个问题:
- 当我尝试
mydomain.com
从我的局域网访问时,它不起作用。我相信这是因为服务器正在从接口获取数据包,eth0
然后通过回复eth1
,而另一个设备正在丢弃响应,因为它来自不同的 IP。 - 在启动时,服务器应该选择
1.2.3.4
作为网络来引导互联网流量,以便外部访问可以通过mydomain.com
。但是,由于两者eth0
都eth1
可以通过各自的网关访问 Internet,因此有时会启动并选择10.0.0.1
默认网关,然后访问mydomain.com
不起作用。我相信这是一个与交通进入eth0
但离开的类似问题eth1
。
虽然我熟悉基本的网络知识,但我没有像这样将服务器同时连接到多个网络的经验。理想情况下,我想配置服务器,以便:
- 所有互联网流量都通过
eth0
- 所有进入
eth0
的流量都通过回复eth0
- 所有进入
eth1
的流量都通过回复eth1
我的服务器运行 Debian,我将不胜感激。
编辑:所以在禁用 eth1 网关并玩了一下之后,tcpdump
我能够确认流量是从 eth0 进入并离开 eth1。问题是 ISP 没有对流向端点的流量进行 NAT 1.2.3.5
,然后服务器将10.0.0.X
地址识别为位于 interface 上eth1
。
这是一个路由问题,可以通过基于源的路由或策略路由来解决。这涉及两个路由表,每个源地址一个:
有关详细信息,请参阅http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html 。
不。带有 NAT 的 ISP 路由器会将您的客户端 10.0.0.0 地址 NAT 到 ISP 动态地址,因此您的服务器将回复该地址而不是内部地址。有一些例外,例如 FTP,不一定与 NAT 兼容,因为它们会将您的内部 IP 地址传递到连接的另一端,但是在一般情况下,您的 NAT 流量将保留在 eth0 上。
检查您的日志以确认客户端出站到 1.2.3.4 并且服务器正在从 NATed 地址 ip.ip.ip.ip 获取连接。
不要那样做。在多宿主配置中拥有多个默认网关很少能像人们想要的那样工作。仅当两条路径都提供对相同网络的访问时,才应使用非常粗略的多个默认网关,例如企业设置中的路由器冗余/高可用性。由于您连接到 Internet 的 ISP 路由器和您与公共网络的直接连接不同,因此您应该删除它。eth0 应该有一个默认路由,eth1 应该有一个到 10.xxx 的路由。您仍然可以使用 DHCP 执行此操作,但是我会将其作为 10.0.0.5 的保留/排除来处理,并手动配置服务器 IP。
除了无关的默认路由,您描述的是正常的默认操作。一定要寻找上面没有描述的其他问题:
我最终通过使用拆分 DNS方法解决了这个问题,在我的主机上部署了一个 DNS 服务器,并使整个 LAN 将其用作默认 DNS 服务器。在那里,我添加了自定义 DNS 重写规则
mydomain.com
以重定向到10.0.0.5
而不是公共地址。这样,局域网中的主机将我的域解析为内部 IP,局域网外的主机将其解析为面向公众的 IP,这样本地流量就不必像以前那样通过 ISP 网络退出。我认为应该能够解决此问题的另一种选择是发夹路由。但是,我的 ISP 提供的路由器似乎不支持这一点。