mac 使用 pf 做端口转发

在使用mac os 进行web开发时,会遇到80端口已经被占用的情况。mac禁止了普通用户访问1024以下的端口,包括80端口。想要通过80端口访问则需要通过端口转发,早期用ipfw做端口转发,但是os10.10之后不能用了,但是可以使用pf做端口转发.

首先:

通过lsof -i tcp:80 查看80端口使用情况,kill 其它占用80的端口

其次:

确认Mac的防火墙是否开启。可以按下面描述开启:系统偏好设置 -> 安全与隐私> 防火墙 -> 打开防火墙

然后:需要修改pf的配置文件

依次运行以下命令:
cd /etc
ls | grep pf.conf
sudo cp pf.conf pf.conf.normal.bak
sudo cp pf.conf pf.conf.transmit.bak
ls | grep pf.conf
sudo vim pf.conf.transmit.bak
//修改配置文件pf.conf
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"

其中添加rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080 到文件的rdr-anchor “com.apple/*” 这一行后面。注意,一定要在这一行下面,这个文件顺序有要求。

最后: 启动

sudo pfctl -d
sudo pfctl -f /etc/pf.conf
sudo pfctl -e

笔记

查看端口号所使用的进程号: lsof -i :端口号
杀死某个端口号: kill -s 9 端口号

推荐阅读更多精彩内容

  • 曾经的 ipfw 已经被 pf 所替换。 首先我们要开启系统的端口转发功能。 本次开机生效: 开机启动配置,需以 ...
    傅易君阅读 9,518评论 7 9
  • 想要自己玩服务器,pagekit是用来做测试的好东西,然而要把tomcat设到80端口又不合适了.Mac OS X...
    TEASON阅读 5,532评论 3 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 67,113评论 12 114
  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 2,223评论 0 34
  • 用三角尺折射出屋檐下的蜘蛛网,用泥土划开白色瓷砖上的层层雨点,用染料晕开涨落的洪水,用玻璃小心刺进绿色海绵……我把...
    路边风起阅读 42评论 0 0