全部 / 技术 · 2020年9月13日 0

Mac下端口转发

Tomcat在Mac下非root权限80端口是启动不了的,所以我们可以利用pfctl端口转发来将本地80端口上的请求转发到比如8080端口,从而实现通过80端口的访问。

端口转发实现

一、修改/etc/pf.conf

先对pf.conf进行备份:cp /etc/pf.conf /etc/pf.conf.normal.bak , 之后在该文件中以下行:

 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
ps:lo0 通过ifconfig 看自己那个设备绑定的是127.0.0.1, lo0是这个网络设备的名字

二、依次执行以下命令:

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

端口转发脚本化

一、依次运行以下命令:

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

二、修改 pf.conf pf.conf.transmit.bak

sudo gedit pf.conf.transmit.bak 

or

sudo vim pf.conf.transmit.bak 

修改的内容参照上一篇配置端口转发的博文,我这里是(注释忽略,仅供参考):

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"

修改好之后,保存。

三、创建启动与关闭脚本文件

1. 找一个方便自己查找的文件夹,比如桌面,创建一个 startup.sh 文件,用于开启端口转发,内容如下:

cp /etc/pf.conf.transmit.bak /etc/pf.conf
sudo pfctl -d
sudo pfctl -f /etc/pf.conf  
sudo pfctl -e  

2. 创建一个 shutdown.sh 文件,用于关闭端口转发,内容如下:

cp /etc/pf.conf.normal.bak /etc/pf.conf
sudo pfctl -d
sudo pfctl -f /etc/pf.conf  
sudo pfctl -e