当试图build立一个OpenBSD路由器时,我遇到了一个明显的路由问题。
我有一个6U千兆网卡(em0-em5)的1U机器。 我的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规则,我已经能够从局域网(em4 / 5)获得基本的互联网访问,并且我可以从局域网访问DMZnetworking上的邮件/ DNS服务器。 到现在为止还挺好。
问题在于从互联网访问DMZnetworking和访问互联网的DMZnetworking上的任何主机(执行上游DNS查找等)。 当DMZnetworking地址是端点时,在任何方向似乎都没有连接到互联网。
我可以从DMZnetworkingping xx.xx.97.246广域网地址,但是我无法ping ISP的默认网关地址( xx.xx.97.241 )。
当试图从DMZnetworking跟踪路由到WAN IP时,我得到一个奇怪的踪迹 – 它跳过em2跳,只报告广域网IP,好像它是下一跳。 如果我指定em2地址作为目标地址,我可以跟踪到em2并将其地址作为下一跳。 无论我不能ping或追踪网关地址 – 我收到“主机无法访问”的消息。
这是我迄今为止所尝试的:
添加从xx.xx.98.193到广域网IP的静态路由,并得到“路由存在”好,是有道理的。 出于绝望,我尝试添加从xx.xx.98.193到网关地址的路由,并得到“目的地不可达”。
将xx.xx.98.193作为IP别名添加到em0,并将em2的地址em2为xx.xx.98.194 。 除了打破通过网关的所有路由之外,这似乎没有任何影响。
从em2拔出DMZ开关,插入configuration为静态地址xx.xx.98.194的PC,然后用pfctl -dclosurespf, pfctl -d基本上通过了所有的操作,并将pf从图片中取出。 不用找了。
用arp -a再次检查arp表,可以看到em2(它是MAC)绑定到xx.xx.98.193 / 29。 还使用netstat -ranf inet检查了路由表,它将xx.xx.97.241网关显示为默认值。
在这一点上,我认为这完全是一个路由问题,尤其是在采取步骤3和4之后。顺便说一下,步骤1和2被颠倒过来,系统在尝试3和4之前重新启动以恢复到之前的configuration。
我考虑过桥接em0和em2但是这似乎不是必须的,因为所有的接口都在同一台机器上,一旦em2主机的数据包进入路由器,路由表应该有通往默认网关的path。
我还注意到在/var/log/messages重复出现一个奇怪的arp消息“试图用”覆盖永久入口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
我昨天晚上尝试了很多configuration(主要是因为我没有想法)。 根据以前的尝试,PF被禁用了pfctl -d作为variables删除它。 可能最有道理的事情是这样的:
em0和em2 。 xx.xx.98.193地址configurationem0 ,使用xx.xx.98.193地址configurationem0 ,然后使用xx.xx.98.195连接到xx.xx.98.195 。 从PC的configuration我可以ping通194地址(EM2 IF),但不是193地址(EM0 IF)。 在OpenBSD系统中,我可以ping 194和195个地址。
似乎无论什么问题是当em2尝试到达em0时发生路由故障。 对于至less一次pingtesting,PC使其达到em0 50损失,但一直失败。
在这里我一定会有一些愚蠢的东西。 我下一个疯狂的尝试是启用/添加内核路由日志,比较接口之间和em0 / 2之间的成功路由输出。 它将成为OpenBSDnetworking堆栈/内核的崩溃课程。 :/
发布netstat -ranf inet的输出。 如果禁用pf并ping在互联网上已知使用ping -I xx.xx.98.193进行响应的主机,会发生什么? 我也发现你的ISP为xx.xx.98.193提供了一个不寻常的MAC地址 – 它使我相信你的问题在你的ISP的末端。