Mac端口转发

1. 问题

Mac 与 linux一样,1024以下端口为特权端口,只有root用户才有权监听。因此,要在mac上使用web服务软件监听80或433端口,要么以root用户启动应用程序,要么使用端口转发。

2. 使用ipfw(Internet Protocol Firewall)设置端口转发

//不过,ipfw工具在高版本mac里面已经不存在了
ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in

3. 使用pf(packet filter)

1.创建anchor文件

anchor文件定义了我们想要转发的端口。

//文件位置
/etc/pf.anchors/
//文件内容,可以添加多行以下格式内容
rdr pass on lo0 inet proto tcp from any to any port  -> 127.0.0.1 port 
//如:8080 转发到80
//rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
2. 测试anchor文件
//测试命令
sudo pfctl -vnf /etc/pf.anchors/

这是时候端口转发并未生效,只是检查anchor文件是否合法。如果看到以下输出结果,证明是有效的。

fctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

rdr pass on lo0 inet proto tcp from any to any port =  -> 127.0.0.1 port 
3. 创建pfctl config文件

anchor文件验证后,需要创建pfctl config文件。

//文件位置
/etc/pf-.conf
//配置内容
rdr-anchor "forwarding"
load anchor "forwarding" from "/etc/pf.anchors/"
4. 测试配置文件

可通过以下命令启动,停止pfctl

//启动
sudo pfctl -ef /etc/pf-.conf
//停止 
sudo pfctl -df /etc/pf-.conf

4. 端口转发启动生效

上面的命令可以根据需求启动和停止端口转发。另外如果想要机器启动自动开启端口转发,可以通过launchctl plist file。

  //文件位置
  /Library/LaunchDaemons/com.apple.pfctl-.plist
  //文件内容
    
    
    
    
         Label
         com.apple.pfctl-
         Program
         /sbin/pfctl
         ProgramArguments
         
              pfctl
              -e
              -f
              /etc/pf-.conf
         
         RunAtLoad
         
         KeepAlive
         
    
    
//添加到启动运行列表
sudo launchctl load -w /Library/LaunchDaemons/com.apple.pfctl-.plist

你可能感兴趣的:(Mac端口转发)