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/ ...
随机推荐
- mongo学习- 聚合project操作
mongodb中聚合project操作,必须和其他的聚合一起使用,它的作用有以下几个: 1.返回我们想要显示的的字段 {"$project":{"name":1 ...
- Restful风格wcf调用3——Stream
写在前面 上篇文章介绍了restful接口的增删改查,本篇文章将介绍,如何通过数据流进行文件的上传及下载操作. 系列文章 Restful风格wcf调用 Restful风格wcf调用2——增删改查 一个 ...
- (3)-JSONObject的过滤设置
我们通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值.例如下面的类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
- task4:结对项目-词频统计
结对人:周楠 思路:利用TreeMap实现key字典序,然后输出到LinkedList,然后用Comparator,实现字典值从大到小排序,但是key实现值相同的key字典序的想出的实现方法,但是一直 ...
- vue实现随机验证码功能
效果图: 1.html代码 <div class="form-group" style="display: flex;"> <div> ...
- c# HighCharts使用
最近接到个图形报表的需求,网络上找了几个插件,最后决定用highcharts 需要的文件 1.bll文件,添加到项目引用 http://files.cnblogs.com/files/loveju ...
- 使用 Apache Atlas 进行数据治理
本文由 网易云发布. 作者:网易/刘勋(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采 ...
- 「BZOJ1426」收集邮票
题目链接 戳我 \(Solution\) 我们首先转换一下问题: 假设我们进行了k轮得到了所有种类的邮票 则所花费用为: \[(1+2+5+...+k)=\frac{(1+k)*k}{2}=\frac ...
- CF834D The Bakery
题目链接:戳我 题意:将一个长度为n的序列分为k段,使得总价值最大.一段区间的价值表示为区间内不同数字的个数 \(n<=35000,k<=50\) 开始想的转移方程是这个样子的--\(dp ...
- mongodb 备份还原
一.简介 说起来数据库的“备份-还原”,在RDBMS系统中,都有很好的支持,也有很多选项可以设置,功能强大,也能自动完成大部分的备份功能,只要当初设置好了就可以了.对于MongoDB文档型的数据库来说 ...