mac下使用pf进行端口转发的疑问与解答

我设置端口转发规则如下:

rdr pass on en0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080


我设置了from any to any,以为这样设置后,在本机打开浏览器,访问网页,那么产生的http流量应该是会被转发到本机的8080端口。可是结果却不是我想的,流量不会被转发到本机的8080端口,因为流量根本就没有被转发。为什么?难道是我的规则配错了?


事实是:我的规则没有配错,只是我的理解错了。翻阅pf的手册,其中对端口转发那一部分,开始的简介是:


如果在办公地点应用了NAT,内部网所有的机器都可以访问因特网。但如何让NAT网关后面的机器能够被从外部访问?这就是重定向的来源。重定向允许外来的流量发送到NAT网关后面的机器。


这就是重定向的来源,重定向是用于把外来到本机的流量转发到其他地方。


所以在本机打开浏览器访问网页,产生的流量不是外来到本机的流量,所以不会被转发。


那么哪些才是可以被转发的流量?

1、本机部署一个web服务器,访问本机的web服务器的流量,会被转发

2、通过arp欺骗,dns欺骗导进来的流量,会被转发

在OpenBSD中配置PF进行网络地址转换(NAT)和端口转发,是一项基础且重要的任务,有助于隐藏内部网络结构并提供服务访问。PF提供了一种灵活且强大的方式来实现这些功能。为了更好地理解和实施相关配置,建议参考《OpenBSD Packet Filter (PF)详解:从基础到高级配置》这本书。以下是针对您的问题的具体步骤和示例: 参考资源链接:[OpenBSD Packet Filter (PF)详解:从基础到高级配置](https://wenku.youkuaiyun.com/doc/52gpqv15k9?spm=1055.2569.3001.10343) 首先,要使用NAT,需要在PF规则集中添加一行定义NAT的规则。例如,如果你想将所有内部网络的IP地址转换为单个外部IP地址,可以使用以下规则: nat on $ext_if from $int_net to any -> $ext_ip 这里,$ext_if 是你的外部接口,$int_net 是你的内部网络,$ext_ip 是你外部IP地址。这条规则将会把从内部网络出来的所有流量的源地址转换为 $ext_ip。 接下来,如果你需要将特定的外部端口的流量转发到内部网络的特定IP和端口,可以使用以下的端口转发规则: rdr pass on $ext_if proto tcp from any to $ext_ip port 80 -> 192.168.1.100 port 80 这条规则将所有外部接口的80端口(通常用于HTTP服务)的TCP流量转发到内部IP地址192.168.1.100的80端口。 创建规则后,需要加载这些规则到PF。这可以通过pfctl工具来完成,使用以下命令: pfctl -f /etc/pf.conf -e 这条命令将会从/etc/pf.conf文件中加载PF规则,并且启用PF。务必确保规则文件路径正确,并且你有足够的权限来加载规则。 经过这些步骤,你的OpenBSD系统将能够使用PF进行网络地址转换和端口转发。为了更好地掌握PF的配置和高级功能,比如性能优化和特定问题的解决,建议进一步阅读《OpenBSD Packet Filter (PF)详解:从基础到高级配置》,这本书中包含了丰富的实用示例和深入的解释,能够帮助你全面地理解和运用PF,从而在你的网络环境中实现更高的安全性和效率。 参考资源链接:[OpenBSD Packet Filter (PF)详解:从基础到高级配置](https://wenku.youkuaiyun.com/doc/52gpqv15k9?spm=1055.2569.3001.10343)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值