在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>

参考:

https://www.v2ex.com/t/191810

http://man.linuxde.net/pfctl

http://www.jianshu.com/p/6052831a8e91(以上内容部分转自此篇文章)

http://www.jianshu.com/p/427337c95a4a

Mac下使用PF进行端口转发和防火墙配置(类似Linux的iptables)的更多相关文章

  1. Mac下开启与关闭端口转发的脚本配置方法

    一.依次运行以下命令: cd /etc ls | grep pf.conf sudo cp pf.conf pf.conf.normal.bak sudo cp pf.conf pf.conf.tra ...

  2. mac 使用 pf 做端口转发

    Mac os中我发现直接输入localhost是拒绝访问的,原因在于OSX 对于1024内端口需要 root 权限,因此需要做一个80端口的转发. 曾经的 ipfw 已经被 pf 所替换. 首先我们要 ...

  3. linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案

    一.安装haproxy作为端口转发服务器(主服务器:172.28.5.4,备服务器:172.28.5.8,浮点IP为:172.28.5.6) 1.安装依赖包 yum -y install wget g ...

  4. windows命令行下用netsh实现端口转发(端口映射)

    微软Windows的netsh是一个命令行脚本实用工具.使用netsh工具 ,可以查看或更改本地计算机或远程计算机的网络配置.不仅可以在本地计算机上运行这些命令,而且可以在网络上的远程计算机上运行. ...

  5. CentOS下用rinetd做端口转发

    windows下的端口转发一般用的是自带的nat和porttunnel.portmap linux下端口转发映射的程序叫rinetd,启动方法rinetd -c /etc/rinetd.conf  , ...

  6. Mac 下 Nginx、MySQL、PHP-FPM 的安装配置

    用了3年多的本本罢工,最近新入手了一台 rmbp,一堆工作环境要配置,LNMP 里的 NMP 是常规要安装的,恰好也是第一次在 mac 上安装配置 nginx.mysql.php,所以顺便做个记录,免 ...

  7. 感觉差不多了。CLOUDSTACK的NAT,端口转发和防火墙结合穿透

    构架差不多OK啦. 测试也近尾声啦. 感觉它适合私有云,或是混合云,但结合了SDN的网络,真的很安全. 如果是纯公有云,也是更适合特定方案.或是要第二次开发,毕竟让ACCOUNT登陆到后台,结合GUE ...

  8. mac下的git的安装与简单的配置

    git 本地操作 git 简单介绍 .Git是分布式的SCM,SVN是集中式的 2.Git每一个历史版本号存储完整的文件,SVN存储文件差异 3.Git可离线完毕大部分操作,SVN则相反 4.Git有 ...

  9. linux下最简单的端口转发工具

    linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载wget http://www.boutell.com/ ...

随机推荐

  1. laydate的使用

    理论可以看看:http://blog.csdn.net/u013372487/article/details/50534034 下载包:链接:http://pan.baidu.com/s/1kUNQ6 ...

  2. 5 CrawlSpider操作

    CrawlSpider 提问:如果想要通过爬虫程序去爬取"糗百"全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Reques ...

  3. Gym 101201I Postman (贪心)

    题意:有个邮递员,要送信,每次最多带 m 封信,有 n 个地方要去送,每个地方有x 封要送,每次都到信全送完了,再回去,对于每个地方,可以送多次直到送够 x 封为止. 析:一个很简单的贪心,就是先送最 ...

  4. java 文件中 定义一个字符串,它的默认编码是什么?

    .java 文件的编码就是 String 字符串的编码 File 文件的编码就是 文件内容的编码 request 的设置的编码就是inputstream 的编码 jvm 的默认编码(the defau ...

  5. 洛谷P3224 [HNOI2012]永无乡(线段树合并+并查集)

    题目描述 永无乡包含 nnn 座岛,编号从 111 到 nnn ,每座岛都有自己的独一无二的重要度,按照重要度可以将这 nnn 座岛排名,名次用 111 到 nnn 来表示.某些岛之间由巨大的桥连接, ...

  6. WinExec打开exe文件

    1,WinExec():   WinExec主要运行EXE文件,不能运行其他类型的文件.不用引用特别单元.   原型:UINT WinExec(exePath,ShowCmd)   示例,我想要用记事 ...

  7. task4: 结对编程-词频统计[修改版]

    问题描述: 读取一个文件,统计其中单词出现次数,并按从高到低的顺序显示,相同顺序的字典序排列. 思路: 基于上次的程序用正则提取出文本里的单词,然后利用字典计数(先get,为null则置1,不为nul ...

  8. [LeetCode 题解]: Symmetric Tree

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述   Given a ...

  9. ajax +LoadLayer插件实现访问页面跳转loading..

    布局页:第一步进行扩展ajax$(function () { $.ajax2 = function (options) {//遮罩 Mask();//jquery 原生ajax $.ajax(opti ...

  10. web 给大家分享一个好玩的东西,也许你那块就用的到

    先看效果: 就这个效果.当你点击右上角的删除按钮,会删除掉item1. 上代码: <!DOCTYPE html> <html> <head> <meta ch ...