openbsd 上转发端口/Nat 的问题

openbsd 上转发端口/Nat 的问题

我无法在 WAN 上提供端口 80,我不知道为什么。

我的设置只是我的家庭网络充当广域网,我的“实验室”充当局域网。 WAN 192.168.0.0/24,LAN 192.168.5.0/24。路由器 wan 接口是 192.168.0.113,lan 接口是 192.168.5.1。 Web 服务器位于 192.168.5.17,我尝试转发 192.168.0.133 上的端口 80。使其在广域网上可用。我把当前版本的规则和 pf 日志放在下面。在我看来,它只是没有重定向流量,我不知道为什么。感谢任何帮助,如果您需要更多信息,我很乐意提供。谢谢!

哦,ssh 规则工作得很好,我猜 b/c 它只是使用 wan 接口,不会重定向到另一台机器。

另外,我还尝试了使用和不使用端口 80 rdr-to 192.168.5.17 的最后一条规则,并且得到了相同的错误

我试图包含 pflog 信息,但堆栈交换说它是垃圾邮件......

#no need to run rules on the loop back int
set skip on lo

#macro to set the external int to em0
ext_if = "em0"

#macro to set the internal int to the other eth int
int_if = "re0"

#macro for the webserver
web_server = "192.168.5.17"

#making table for people that we want to block
table <badguys> persist file "/etc/badguys"
block quick from <badguys>

#naming specific trusted IPs
trusted = "{ 192.168.0.155 }"

#blocking all inbound and outbound ip6 traffic
block inet6

#default policy, remember pf is a last match application unless you use quick
block all

#this is for passing and taging all internal traffic
pass in on $int_if tag ALLOWED

#perform NAT
match out on $ext_if inet from ($int_if:network) to any nat-to ($ext_if)

#pass out all of the packets that were tagged
pass out on $ext_if tagged ALLOWED

#allows traffic out from the host
pass out from { ($ext_if),$int_if }

#rule to let in ssh
pass in on $ext_if proto tcp from {192.168.0.0/24 $trusted} to {192.168.0.113} port 22 flags S/SA keep state \
                       (max-src-conn 5, max-src-conn-rate 5/5, \
                                  overload <badguys> flush global)

#trying to forward http

pass log on $int_if from 192.168.5.17 to any binat-to 192.168.0.113
pass in log on $ext_if proto tcp from any to 192.168.0.113 port 80 rdr-to 192.168.5.17

答案1

你不需要binat规则。

pass in on $ext_if proto tcp to $(ext_if) port 80 rdr-to 192.168.5.17
pass out on $int_if proto tcp to 192.168.5.17 port 80

应该足够了。请注意,最后一条规则不包括在内

pass out from { ($ext_if),$int_if }

因为重定向的包既不是来自 的$ext_ifIP 地址,也不是来自$int_if.

由于您或多或少可以控制主机上发生的情况,因此添加一个简单的pass out规则(即仅过滤 WAN 和 LAN 上的传入流量)并删除所有其他pass out ...规则可能会使事情变得更简单。

在外部和内部接口上使用tcpdump来查看数据包(及其回复)是否实际转发和重定向/NAT 可能会有所帮助。我还建议在网络服务器上执行相同的操作。

另外,还要注意路由问题。确保网络服务器知道将其回复发送到哪里。在您的示例中,如果它知道 192.168.5.1 是发往 192.168.0.0/24 的数据包的网关(甚至是其默认网关)。

相关内容