OpenBSD 路由:无法从配置为静态阻止的 IF 到达网关

OpenBSD 路由:无法从配置为静态阻止的 IF 到达网关

当尝试设置 OpenBSD 路由器时,我遇到了明显的路由问题。

我有一台 1U 机器,配有 6 个千兆位网卡(em0-em5)。我的 ISP 为我提供了以下服务:

xx.xx.97.246/28 static WAN IP.
xx.xx.97.241 default gateway address.
xx.xx.98.192/29 static block that is externally routed to via xx.xx.97.246

这是我的设置:

+-------------------+
|        em0        +----> ISP's gateway (xx.xx.97.241)
|    xx.xx.97.246   |
+-------------------+
|        em2        +----> DMZ network (xx.xx.98.194-198)
|  xx.xx.98.193/29  |
+-------------------+
|        em4        +----> LAN2 (172.16.1.0/24)
|     172.16.1.1    |      [NATs to xx.xx.97.246 address]
+-------------------+
|        em5        +----> LAN (192.168.1.0/24)
|    192.168.1.1    |      [NATs to xx.xx.97.246 address]
+-------------------+

已在 启用转发sysctl.conf

通过此设置和一些基本的 PF 规则,我能够从 LAN 网络 (em4/5) 获得基本的 Internet 访问权限,并且我可以从 LAN 网络访问 DMZ 网络上的邮件/DNS 服务器。到目前为止,一切顺利。

问题在于从互联网访问 DMZ 网络,以及 DMZ 网络上的任何主机访问互联网(执行上游 DNS 查找等)。当 DMZ 网络地址为端点时,似乎没有任何方向与互联网的连接。

我可以xx.xx.97.246从 DMZ 网络 ping 通 WAN 地址,但无法 ping 通 ISP 的默认网关地址 ( xx.xx.97.241)。

当我尝试从 DMZ 网络跟踪路由到 WAN IP 时,我得到了一个奇怪的跟踪 - 它跳过了 em2 跳转,只报告了 WAN IP,好像它是下一跳一样。如果我将 em2 地址指定为目标地址,我可以跟踪到 em2 并获取其地址作为下一跳。无论如何,我无法 ping 或跟踪到网关地址 - 我收到“主机不可访问”消息。

这是我迄今为止尝试过的:

  1. 添加从 WAN IP 到 WAN IP 的静态路由xx.xx.98.193,并得到“路由存在”的提示,这很合理。出于无奈,我尝试添加从 WAN IPxx.xx.98.193到网关地址的路由,但得到“目的地无法到达”的提示。

  2. 将 em0添加xx.xx.98.193为 IP 别名,并将 的地址更改em2xx.xx.98.194。除了破坏通过网关的所有路由之外,这似乎没有任何影响。

  3. 拔下 DMZ 交换机em2,插入配置为静态地址的 PC,xx.xx.98.194然后禁用 pf,pfctl -d这样基本上可以传递所有内容并将 pf 排除在外。没有变化。

  4. 使用 仔细检查了 arp 表arp -a,可以看到 em2(它的 MAC)已绑定到 xx.xx.98.193/29。还使用 检查了路由表,netstat -ranf inet它显示xx.xx.97.241网关为默认值。

此时我认为这纯粹是一个路由问题,特别是在执行步骤 3 和 4 之后。顺便说一下,在尝试 3 和 4 之前,步骤 1 和 2 被逆转并且系统重新启动以恢复到以前的配置。

我已经考虑过桥接em0em2但它似乎没有必要,因为所有接口都在同一台机器上,并且一旦em2主机的数据包进入路由器,路由表就应该有到默认网关的路径。

我还注意到一个奇怪的 arp 消息重复出现,内容是/var/log/messages“尝试用 xx.xx.98.193 覆盖永久条目”。通过 arp 发送的 mac 来自 ISP 的网关xx.xx.97.241。不确定这是正常的“聊天记录”还是我的问题的症状。

提前感谢您阅读和回复,

更新:

这是我的路由表:

Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
default            xx.xx.97.241       UGS        4       54     -     8 em0  
127/8              127.0.0.1          UGRS       0        0 32768     8 lo0  
127.0.0.1          127.0.0.1          UHl        1        0 32768     1 lo0  
172.16.1/24        172.16.1.1         C          0        0     -     8 em4  
172.16.1.1         xx:xx:xx:xx:1b:60  HLl        0        0     -     1 lo0  
172.16.1.255       172.16.1.1         Hb         0        0     -     1 em4  
192.168.1/24       192.168.1.1        C          0        0     -     8 em5  
192.168.1.1        xx:xx:xx:xx:1b:61  HLl        0        0     -     1 lo0  
192.168.1.255      192.168.1.1        Hb         0        0     -     1 em5  
xx.xx.97.240/28    xx.xx.97.246       UC         1        0     -     8 em0  
xx.xx.97.241       xx:xx:xx:xx:fc:d4  UHLc       1        4     -     8 em0  
xx.xx.97.246       xx:xx:xx:xx:1b:5c  HLl        0        0     -     1 lo0  
xx.xx.97.255       xx.xx.97.246       UHb        0        0     -     1 em0  
xx.xx.98.192/29    xx.xx.98.193       UC         2        0     -     8 em2  
xx.xx.98.193       xx:xx:xx:xx:1b:5e  HLl        0        0     -     1 lo0  
xx.xx.98.195       xx:xx:xx:xx:d8:33  UHLc       0        4     -     8 em2  
xx.xx.98.197       link#3             UHLc       0        4     -     8 em2  
xx.xx.98.199       xx.xx.98.193       UHb        0        0     -     1 em2  
224/4              127.0.0.1          URS        0        0 32768     8 lo0 

昨晚我尝试了很多配置(主要是因为我没有主意了)。按照之前的尝试,PF 被禁用以pfctl -d将其作为变量删除。可能最明智的尝试是这样的:

  1. 拔下 em4 和 em5(动态网络)并从 /etc 中删除它们的 hostname.if 文件以仅留下em0em2
  2. 配置em0地址xx.xx.98.193,并将 em2 配置为地址,然后使用xx.xx.98.194连接一台 PC 。em2xx.xx.98.195

使用该配置,在 PC 上我可以 ping 通 194 地址 (em2 IF),但无法 ping 通 193 地址 (em0 IF)。在 OpenBSD 系统中,我可以 ping 通 194 和 195 地址。

em2不管问题是什么,似乎在尝试连接时路由中断了em0。此外,至少有一次 ping 尝试,PC 以 50 的丢失率成功完成em0,但此后一直失败。

这里肯定有什么愚蠢的东西是我遗漏的。我接下来要尝试的疯狂的事情是启用/添加内核路由日志,并比较接口之间和 em0/2 之间的成功路由之间的输出。这将是 OpenBSD 网络堆栈/内核的速成课程。:/

答案1

发布 netstat -ranf inet 的输出。如果您禁用 pf 并使用 ping -I xx.xx.98.193 ping 互联网上已知会响应的主机,会发生什么情况?我还发现您的 ISP 为 xx.xx.98.193 提供的 MAC 地址很不寻常 — 这让我相信您的问题出在您的 ISP 端。

相关内容