MacOS使用PF实现iptables的端口转发功能

目录

    • 准备web服务
    • 通过pf实现端口转发
    • 其他命令
    • 参考文章

准备web服务

使用Flask启动一个简单的web服务

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run(port=5000)

浏览器访问:http://127.0.0.1:5000/

通过pf实现端口转发

将所有端口8080的请求,都转发到127.0.0.1:5000,类似Nginx的反向代理

1、开启IPv4 的转发

# 开启 IPv4 的转发
$ sudo sysctl -w net.inet.ip.forwarding=1# 查看当前端口转发功能状态
sudo sysctl -a | grep forward
net.inet.ip.forwarding: 1
net.inet6.ip6.forwarding: 0

2、添加转发配置文件

sudo vim /etc/pf.anchors/http
rdr pass on lo0 inet proto tcp from any to any port 8080 -> 127.0.0.1 port 5000
rdr pass on en0 inet proto tcp from any to any port 8080 -> 127.0.0.1 port 5000

查看到的网络名称

$ ifconfig -a
# lo0 是本机ipv4地址 eg: 127.0.0.1
# en0 是局域网ipv4地址 eg: 192.168.0.100

检查正确性

$ sudo pfctl -vnf /etc/pf.anchors/http

3、修改pf配置文件

sudo vim /etc/pf.conf

增加如下配置

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

重启pf服务

sudo pfctl -ef /etc/pf.conf

浏览器访问:http://127.0.0.1:8080/

其他命令

# 启用pf服务
$ sudo pfctl -e# 强制重启PF服务
$ sudo pfctl -E# 关闭PF
$ sudo pfctl -d

参考文章

  • https://man.openbsd.org/pfctl
  • https://man.openbsd.org/pf.conf
  • Mac下使用PF进行端口转发和防火墙配置(类似Linux的iptables)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/127690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis plus框架@TableField注解不生效问题及解决方案

目录 一、问题描述二、解决方案三、关于TableField注解失效原因的思考四、Mapper接口LambdaQuery方法调用过程梳理1、Mapper接口调用实际上使用的是动态代理技术2、mybatisplus对查询的单独处理3、findOne实际上还是要查询List4、mybatis接口上下文信息MappedStatement5、myba…

EasyCVR智能边缘网关用户信息泄漏漏洞

EasyCVR智能边缘网关用户信息泄漏漏洞 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: title"EasyCVR" 漏洞复现1. 构造poc2. 获取管理员账户密码3. 登录后台 免责声明 仅用于技术交流,目的是向相关安全人员展示漏洞利用方式,以便更好地提高网络安全意识和技术水平…

办公必备神器:如何用AI快速生成年终总结PPT?

2023年已经步入尾声,今年的销售业绩如何?用户同比增长率是否达到预期?部门年度API完成情况?新开发的项目进展如何?品牌全球计划在各区域市场的部署进展?…… 每年年底,不论是纵横全球的大企业&…

开发环境配置之Linux安装golang

Linux安装golang 目录 1. 下载Go发行版2. 配置工作空间3. 版本升级 1. 下载Go发行版 从官方地址:https://golang.org/dl/ 上下载合适的 二进制发行版 可以使用wget、curl等工具下载具体的go的发行版。 wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz接着…

Android---底层剖析 Window、Activity、View 三者关系

对于一个 Android 工程师来讲,或多或少都听说过 Window 的概念,并且隐约感受到它在 Activity 和 View 之间应该发挥着某种连接的作用。但如果要说出这三者之间的关系,多数 android 工程师都不知道从何下手。 Activity 的 setContentView Ac…

教研成果登记网站建设开发原理,齿轮加工刀片

成都工具研究所有限公司的前身是成都工具研究所,于1956年创建于北京,是原机械工业部的直属研究所,是我国机械工业的综合性工具科研机构。公司ctri.com.cn 公司主要从事精密切削工具、精密测量仪器以及表面改性处理技术的技术研究、产品开发和…

VScode远程连接错误:进程试图写入不存在的管道

使用VScode连接树莓派时,出现远程连接错误:进程试图写入不存在的管道 解决方案: (1)可以进入config所在文件夹,删除文件 (2)无法解决的化尝试下述方法 输入 Remotting-SSH:Settin…

FreeRTOS-任务通知

一.任务通知的相关API 1. vTaskNotifyGive(): 用于给指定任务发送通知。 void vTaskNotifyGive( TaskHandle_t xTaskToNotify );参数说明: xTaskToNotify: 被通知的任务的句柄。返回值: 无。2. ulTaskNotifyTake(): 用于等待并接收任务通知。 uint32_…

自定义表格的表头根据后端的数据进行筛选是否进行自定义表头添加按钮

自定义表格的表头根据后端的数据进行筛选是否进行自定义表头添加按钮 自定义表格的表头根据后端的数据进行筛选是否进行自定义表头添加按钮 <template><div class"box"><el-table :data"msgMapList" border class"table">&l…

Java入门篇 之 逻辑控制(练习题篇)

博主碎碎念: 练习题是需要大家自己打的请在自己尝试后再看答案哦&#xff1b; 个人认为&#xff0c;只要自己努力在将来的某一天一定会看到回报&#xff0c;在看这篇博客的你&#xff0c;不就是在努力吗&#xff0c;所以啊&#xff0c;不要放弃&#xff0c;路上必定坎坷&#x…

k8s约束调度其二

一&#xff0c;Pod亲和性与反亲和性 调度策略匹配标签操作符拓扑域支持调度目标nodeAffinity主机In, NotIn, Exists,DoesNotExist, Gt, Lt 否 指定主机podAffinityPodIn, NotIn, Exists,DoesNotExist是Pod与指定PodpodAntiAffinityPodIn, NotIn, Exists,DoesNotExist是Pod与指…

java8利用Stream方法求两个List对象的交集、差集与并集(即:anyMatch和allMatch和noneMatch的区别详解)

1、anyMatch 判断数据列表中是否存在任意一个元素符合设置的predicate条件&#xff0c;如果是就返回true&#xff0c;否则返回false。 接口定义&#xff1a; boolean anyMatch(Predicate<? super T> predicate); 方法描述&#xff1a; 在anyMatch 接口定义中是接收 P…

c++ Vector 学习

vevtor 是c 中自带得动态数组&#xff0c;dynamic array array can hold different values/objects of same type 可以装不同得类型或者对象 dynamic size can be changed at runtime 可以运行得时候改变 要使用的话&#xff0c;先引入 #include <vector> std::vector…

Kafka基本原理、生产问题总结及性能优化实践 | 京东云技术团队

Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以实时的处理大量数据以满足各种需求场景&a…

Mac 解决 APP 快捷键冲突

打开 Mac 系统设置键盘->键盘快捷键->App快捷键->添加快捷键&#xff08;加号&#xff09;->标题需要和tab名称完全一致&#xff08;包括中英文、标点符号等&#xff0c;如下图&#xff09;设置快捷键即可 Reference&#xff1a; https://www.cnblogs.com/Questio…

考前须知-11月软考机考

1、11月4-5日考试有几个时间点需注意&#xff1a; 考前40分钟&#xff0c;应试人员应到达准考证上所指定的考点&#xff0c;凭本人准考证和有效证件&#xff08;居民身份证、社会保障卡、港澳台居民身份证明、外籍人员护照、外国人永久居留证明&#xff09;原件进入进入本资格…

算法通关村第五关|青铜|基于链表实现队列

基于链表实现队列 public class LinkQueue {// front的next指向首部结点private Node front;// rear记录尾部结点private Node rear;private int size;public LinkQueue() {this.front new Node(0);this.rear new Node(0);}// 入队public void push(int value) {Node newNod…

分析报告有样板了-奥威BI数据可视化报表模板

述职报告、月度数据分析报告、季度数据分析报告、区域数据分析报告……人在职场&#xff0c;数据分析报告少不了。那么&#xff0c;怎么才能在极短的时间内做出一张既好看又突出重点、分析逻辑在线的数据可视化分析报表&#xff1f;奥威BI软件的建议是采用BI数据可视化报表模板…

成本中心修改后推送其他SAP系统更新成本中心(ALE)

成本中心修改后推送给其他系统 KSH2成本中心组新增成本中心&#xff08;服务器A 400client&#xff09; KAVB 输入成本中心组、控制范围、目标系统 Y 查看&#xff08;服务器B 430client&#xff09;

数字化时代,谈谈数据资产这件事

在全球数字化转型的大趋势下&#xff0c;数据交易市场有望推动数据要素价值的开放共享和流通。据信通院测算&#xff0c;2021年全球47个重要经济体的数字经济增加值规模高达 38.1 万亿美元&#xff0c;我国2021年数字经济规模也已达到7.1万亿美元。数据之于数字经济的价值不言而…