Mac下使用PF进行端口转发和防火墙配置(类似Linux的iptables)
在Mac没有iptables这些,替代的软件为PF,命令为pfctl。在早些版本用ipfw(<=10.10),后面改为PF。还有一些可以使用OpenBsd,不过这个不太好用。
网上关于pfctl的参数估计不太全,建议直接使用man pfctl去查看。
下面是收集的一些用法:
用PF做端口转发:
首先我们要开启系统的端口转发功能。
本次开机生效:
# IPv4 的转发
$ sudo sysctl -w net.inet.ip.forwarding=
net.inet.ip.forwarding: -> # IPv6 的转发
$ sudo sysctl -w net.inet6.ip6.forwarding=
net.inet6.ip6.forwarding: ->
开机启动配置,需以 root 身份添加或修改 /etc/sysctl.conf 文件,加入以下两行:
net.inet.ip.forwarding=
net.inet6.ip6.forwarding=
查看当前端口转发功能状态:
$ sudo sysctl -a | grep forward
net.inet.ip.forwarding:
net.inet6.ip6.forwarding:
开启端口转发之后,即可配置端口转发规则。你可以跟着手册来:
$ man pfctl
$ man pf.conf
或者跟着下文手动新建文件。如/etc/pf.anchors/http文件内容如下:
rdr pass on lo0 inet proto tcp from any to any port -> 127.0.0.1 port
rdr pass on lo0 inet proto tcp from any to any port -> 127.0.0.1 port
rdr pass on en0 inet proto tcp from any to any port -> 127.0.0.1 port
rdr pass on en0 inet proto tcp from any to any port -> 127.0.0.1 port
检查其正确性:
$ sudo pfctl -vnf /etc/pf.anchors/http
修改PF的主配置文件/etc/pf.conf开启我们添加的锚点http。
pf.conf对指令的顺序有严格要求,相同的指令需要放在一起,否则会报错 Rules must be in order: options, normalization, queueing, translation, filtering.
# 在 rdr-anchor "com.apple/*" 下添加
rdr-anchor "http-forwarding" # 在 load anchor "com.apple" from "/etc/pf.anchors/com.apple" 下添加
load anchor "http-forwarding" from "/etc/pf.anchors/http"
最后导入并允许运行:
$ sudo pfctl -ef /etc/pf.conf
使用-e命令启用pf服务。使用-E命令强制重启PF服务:
$ sudo pfctl -E
使用-d命令关闭PF:
$ sudo pfctl -d
从Mavericks起PF服务不再默认开机自启。如需开机启动PF服务,请往下看。
新版Mac OS 10.11 EI Captian加入了系统完整性保护机制,需重启到安全模式执行下述命令关闭文件系统保护。
$ csrutil enable --without fs
然后才能修改/System/Library/LaunchDaemons/com.apple.pfctl.plist文件实现开机自启用配置。
向plist文件中添加-e行,如下所示:
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
参考:
http://www.jianshu.com/p/6052831a8e91(以上内容部分转自此篇文章)
http://www.jianshu.com/p/427337c95a4a
Mac下使用PF进行端口转发和防火墙配置(类似Linux的iptables)的更多相关文章
- Mac下开启与关闭端口转发的脚本配置方法
一.依次运行以下命令: cd /etc ls | grep pf.conf sudo cp pf.conf pf.conf.normal.bak sudo cp pf.conf pf.conf.tra ...
- mac 使用 pf 做端口转发
Mac os中我发现直接输入localhost是拒绝访问的,原因在于OSX 对于1024内端口需要 root 权限,因此需要做一个80端口的转发. 曾经的 ipfw 已经被 pf 所替换. 首先我们要 ...
- linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案
一.安装haproxy作为端口转发服务器(主服务器:172.28.5.4,备服务器:172.28.5.8,浮点IP为:172.28.5.6) 1.安装依赖包 yum -y install wget g ...
- windows命令行下用netsh实现端口转发(端口映射)
微软Windows的netsh是一个命令行脚本实用工具.使用netsh工具 ,可以查看或更改本地计算机或远程计算机的网络配置.不仅可以在本地计算机上运行这些命令,而且可以在网络上的远程计算机上运行. ...
- CentOS下用rinetd做端口转发
windows下的端口转发一般用的是自带的nat和porttunnel.portmap linux下端口转发映射的程序叫rinetd,启动方法rinetd -c /etc/rinetd.conf , ...
- Mac 下 Nginx、MySQL、PHP-FPM 的安装配置
用了3年多的本本罢工,最近新入手了一台 rmbp,一堆工作环境要配置,LNMP 里的 NMP 是常规要安装的,恰好也是第一次在 mac 上安装配置 nginx.mysql.php,所以顺便做个记录,免 ...
- 感觉差不多了。CLOUDSTACK的NAT,端口转发和防火墙结合穿透
构架差不多OK啦. 测试也近尾声啦. 感觉它适合私有云,或是混合云,但结合了SDN的网络,真的很安全. 如果是纯公有云,也是更适合特定方案.或是要第二次开发,毕竟让ACCOUNT登陆到后台,结合GUE ...
- mac下的git的安装与简单的配置
git 本地操作 git 简单介绍 .Git是分布式的SCM,SVN是集中式的 2.Git每一个历史版本号存储完整的文件,SVN存储文件差异 3.Git可离线完毕大部分操作,SVN则相反 4.Git有 ...
- linux下最简单的端口转发工具
linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载wget http://www.boutell.com/ ...
随机推荐
- ORA-00054、ORA-08002
https://docs.oracle.com/cd/B10501_01/server.920/a96525/e7500.htm ORA-00054 resource busy and acquire ...
- 如何快速获取官网帮助信息 (附 11g pdf 文档)
http://docs.oracle.com/en/ 11g Release 2 (11.2) 搜索时指定网站 site:docs.oracle.com create table site:docs. ...
- Fork/Join 型线程池与 Work-Stealing 算法
JDK 1.7 时,标准类库添加了 ForkJoinPool,作为对 Fork/Join 型线程池的实现.Fork 在英文中有 分叉 的意思,而 Join 有 合并 的意思.ForkJoinPool ...
- JAVA内存管理再解
首先我们要明白一点,我们所使用的变量就是一块一块的内存空间!! 一.内存管理原理: 在java中,有java程序.虚拟机.操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统间交 ...
- Oracle E-Business Suite R12.1.x Installation And Upgrade Guide Step by Step
1. Install Oracle E- Business Suite R12.1.1 2. Upgrade E- Business Suite From 12 ...
- 开通博客暨注册github事件
(1) 姓 名:丁新宇 学 号:1413042054 班 级:网工142 兴趣爱好:听歌.看书.编代码. (2) GitHub注册流程: 1,百度搜索GitHub,进入官 ...
- iOS Png Crush 错误
添加新的 png 图片到项目里的时候,出现错误 错误内容: while reading... pngcrush caught libpng error: cound not find file... ...
- ClamAV学习【5】—— cli_scanpe函数浏览
这近2000行的代码,要是没有Source Insight,都不知道怎么看下去.跟着跟着来到了PE文件查杀的地方,发现前面都中规中矩地进行PE属性检查,中间一段开始扫描每个区块,然后和特征库的size ...
- Codechef:Fibonacci Number/FN(二次剩余+bsgs)
题面 传送门 前置芝士 \(bsgs\),\(Cipolla\) 题解 因为题目保证\(p\bmod 10\)是完全平方数,也就是说\(p\bmod 5\)等于\(1\)或\(-1\),即\(5\)是 ...
- 面向对象之-@classmethod、@staticmethod和@classonlymethod的区别
实例方法.静态方法与类方法的含义 实例方法(普通方法)的含义就是需要类对象实例之后才能调用的方法,该方法的基本格式为: def test(self,*args,**kwargs): # 第一个参数必须 ...