Pages

Wednesday, 17 July 2024

mac的防火墙命令ipfw/pf

mac禁止了普通用户访问1024以下的端口,包括80端口

想要通过80端口访问则需要通过端口转发,命令如下:

sudo ipfw add fwd 127.0.0.1,1081 tcp from any to 127.0.0.1 80 in

大致意思是做端口转发,80端口打到1081上,这样web服务都指向了nginx的1081(相当于原来的80端口)

 

老版本OS X使用ipfw端口转发,但新版本 OSX Yosemite (10.10.3) 以后,已经无法使用ipfw,而是换成了pf.

pf 转发步骤:

1. 新建 com.pow

vim /etc/pf.anchors/com.pow

1
2
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8088
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8088

1
rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8088

其中,lo0为ifconfig时查询到的网卡的名字  80是tomcat端口,8088为转发的端口

注意: 在段落末尾一定要加换行,否则会报syntax error错误。

 

2. pfctl 命令检测配置文件

sudo pfctl -vnf /etc/pf.anchors/com.pow

 

3. 配置 pf.conf

vim /etc/pf.conf

添加内容如下红色字体:

#
# com.apple anchor point
#
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"

rdr-anchor "pow"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"

load anchor "pow" from "/etc/pf.anchors/com.pow"

转发端口配置

1. 手动临时设置转发端口:

sysctl -w net.inet.ip.forwarding=1

2. 永久文件设置转发端口

sudo vim /etc/sysctl.conf

添加内容:

1
2
net.ip.forwarding=1
net.inet6.ip6.forwarding=1

执行命令使生效:

sysctl -p          // mac os x 下不生效,无此命令...

3. 查看生效转发端口

sudo sysctl -a | grep forward

1
2
3
yg-mac:Java homer$ sudo sysctl -a | grep forward
net.inet.ip.forwarding: 1
net.inet6.ip6.forwarding: 0

说明: 1 - 表示生效, 0 - 表示未生效 

 

4. 生效配置

sudo pfctl -evf /etc/pf.anchors/com.pow           // OSX Yosemite以后版本

sudo pfctl -f /etc/pf.conf          // OSX Yosemite以前版本

 

5. 开机启动

sudo pfctl -e        // 开启开机启动
sudo pfctl -d        // 关闭开机启动

 

 

ipfw 命令(OSX Yosemite 10.10.3 以前版本有的命令):

ipfw (Internet Protocol FireWall)

a、查看规则:

sudo ipfw list

00100 fwd 127.0.0.1,1081 tcp fromany to 127.0.0.1 dst-port 80 in
65535 allow ip from any to any

b、删除规则:

sudo ipfw delete 100

c、新增规则:

sudo ipfw add fwd 127.0.0.1,1081tcp from any to 127.0.0.1 80 in

No comments:

Post a Comment