ubuntu 用ss-TPROXY实现透明代理,基于TPROXY的透明TCP/UDP代理,在 Linux 2.6.28 后进入官方内核。
TPROXY 是一个 Linux 内核模块,在 Linux 2.6.28 后进入官方内核。
1 安装 tproxy 相关依赖
参考ss-tproxy 的安装依赖。
- bash
ss-tproxy 使用了 bash 的一些语法特性,比如 shell 数组,因此必须用 bash 解释器执行。大多数发行版已经自带了 bash;如果没有,请先安装一个 bash,比如那些基于 busybox 的系统。如果可以通过包管理器安装 bash,那最好;如果不行,可以看看上面两个链接,取出里面的 bash 二进制文件。
https://github.com/robxu9/bash-statichttps://packages.debian.org/sid/bash-static
- curl
请检查 curl 是否支持 HTTPS 协议,使用 curl --version 可查看(Protocols)
apt -y install curl
- ipset
apt -y install ipset
- TPROXY
TPROXY 是一个 Linux 内核模块,在 Linux 2.6.28 后进入官方内核。一般正常的发行版都没有裁剪 TPROXY 模块,TPROXY 模块缺失问题主要出现在无线路由固件上(某些精简型发行版也会去掉 TPROXY 模块,比如 Alpine)。使用以下方法可以检测当前内核是否包含 TPROXY 模块。
# 查找 TPROXY 模块
find /lib/modules/$(uname -r) -type f -name 'xt_TPROXY.ko*'# 正常情况下的输出
/lib/modules/4.16.8-1-ARCH/kernel/net/netfilter/xt_TPROXY.ko.xz# 尝试手动加载模块
modprobe xt_TPROXY
- iproute2
大部分发行版都自带了 iproute2,可以运行一下 ip addr 命令,如果成功打印了网络接口的 ip,那就是已安装。
apt -y install iproute2
- dnsmasq
apt -y install dnsmasq
- chinadns-ng
chinadns-ng 是用 C 语言编写的另一个 chinadns,修复若干问题,优化了性能。
可以直接在 releases 页面下载编译好的二进制文件。然后复制到/usr/local/bin,参考命令 cp -af xxx /usr/local/bin/xxx
https://github.com/zfl9/chinadns-ng
- dns2tcp
dns2tcp 是用 C 语言写的小工具,专做 dns udp2tcp 转换。
可以直接在 releases 页面下载编译好的二进制文件。然后复制到/usr/local/bin,参考命令 cp -af xxx /usr/local/bin/xxxhttps://github.com/zfl9/dns2tcp
- ipt2socks
ipt2socks 是用 C 语言写的小工具,专做 iptables-to-socks5 转换。
可以直接在 releases 页面下载编译好的二进制文件。然后复制到/usr/local/bin,参考命令 cp -af ipt2socks /usr/local/bin/ipt2socks
https://github.com/zfl9/ipt2socks
用systemd运行Trojan服务trojan.service
/etc/systemd/system/trojan.service
[Unit]
Description=trojan-service[Service]
ExecStart=/usr/bin/trojan /etc/trojan/config.json
Restart=on-failure
RestartSec=60
SyslogIdentifier=trojan-service
User=root[Install]
WantedBy=multi-user.target
2 配置SOCKS5 服务
可以采用一些工具,如果你有云服务器,可以在云服务部署SOCKS5,通过云服务器达到保护隐私的目的。例如采用这个软件:
https://p4gefau1t.github.io/trojan-go,更详细,我就不说了,免得文章被屏蔽
3 用ss-TPROXY
普通代理:client 实现的是 http、socks5 传入协议。透明代理:client 实现的是 透明代理 传入协议。
如果 client 端只支持 socks5 传入,不支持透明代理传入,还能实现透明代理吗?当然可以,我们可以运行 ipt2socks,实现TCP 支持 TPROXY/REDIRECT 传入,UDP 支持 TPROXY 传入。ipt2socks 是【https://github.com/zfl9】编写的一个简单 C 程序
搭配 TPROXY:支持 TCP 和 UDP 协议的透明代理。
我采用了工具ss-tproxy,
获取
git clone https://github.com/zfl9/ss-tproxy
cd ss-tproxy
chmod +x ss-tproxy安装
cp -af ss-tproxy /usr/local/bin
mkdir -p /etc/ss-tproxy
cp -af *.conf *.txt *.ext /etc/ss-tproxy
cp -af ss-tproxy.service /etc/systemd/system # 可选,安装 service 文件卸载
# 停止脚本 (v4.7版本开始)
ss-tproxy stop
ss-tproxy flush-stoprule
# 删除文件
rm -fr /usr/local/bin/ss-tproxy # 删除脚本
rm -fr /etc/ss-tproxy # 删除配置(做好备份)
rm -fr /etc/systemd/system/ss-tproxy.service # service文件脚本开机自启
将 ss-tproxy.service 文件放到 /etc/systemd/system/ss-tproxy.service,执行:
systemctl daemon-reload
systemctl enable ss-tproxy
配置文件
首先是 第二节的 2 配置SOCKS5 服务 ,更详细,我就不说了,免得文章被屏蔽
其次 ss-TPROXY 的配置,参考 https://github.com/zfl9/ss-tproxy 的代理软件配置,说实话,难度比较大,需要具备看懂shell脚本的能力。
我备份一下我的配置在 https://gitee.com/hiyanyx/study-transparent-proxy-v1-bash 。其实整体的难度偏大!初学者就不要看了。
异常情况1:内网主机无法访问白名单
ss-tproxy 主机上都正常,但其他主机上,黑名单正常,白名单不正常(如百度无法访问)。请将 ipts_set_snat(IPv4)、ipts_set_snat6(IPv6)设为 true。并检查 ss-tproxy 主机的 iptables 规则,有些系统会将 FORWARD 链的默认策略设为 DROP,如果有这种情况,请进行合理的调整,如果不知道怎么设置,可以参照下面的步骤,配置 pre_start 钩子函数。
代理异常时,应留意系统是否预设了某些 iptables 规则、是否与 ss-tproxy 冲突
比如,你可以通过 pre_start 钩子函数,在 start 之前,将已有的 iptables 规则清空,并将默认策略设为 ACCEPT。编辑 ss-tproxy.conf,添加如下内容(这些命令会在 ss-tproxy start 之前执行):
reset_ipt() {local table_chains=(raw 'PREROUTING OUTPUT'mangle 'PREROUTING INPUT FORWARD OUTPUT POSTROUTING'nat 'PREROUTING INPUT OUTPUT POSTROUTING'filter 'INPUT FORWARD OUTPUT')for ((i = 0; i < ${#table_chains[@]}; i += 2)); dolocal table="${table_chains[i]}"local chains="${table_chains[i + 1]}"$1 -t $table -F$1 -t $table -Xfor chain in $chains; do$1 -t $table -P $chain ACCEPTdonedone
}pre_start() {is_true "$ipv4" && reset_ipt iptablesis_true "$ipv6" && reset_ipt ip6tables
}
资源
https://gitee.com/hiyanyx/study-transparent-proxy-v1-bash
相关文章:
ubuntu 用ss-TPROXY实现透明代理,基于TPROXY的透明TCP/UDP代理,在 Linux 2.6.28 后进入官方内核。
TPROXY 是一个 Linux 内核模块,在 Linux 2.6.28 后进入官方内核。 1 安装 tproxy 相关依赖 参考ss-tproxy 的安装依赖。 bash ss-tproxy 使用了 bash 的一些语法特性,比如 shell 数组,因此必须用 bash 解释器执行。大多数发行版已经自带了…...
报错解决:opene3d draw_geometries(): incompatible function arguments.
1. 报错信息 o3d.visualization.draw_geometries(target_pcd) TypeError: draw_geometries(): incompatible function arguments. The following argument types are supported:1. (geometry_list: List[open3d.cpu.pybind.geometry.Geometry], window_name: str Open3D, wid…...
Clickhouse笔记(二) 集群搭建
0.集群规划 操作系统使用ubuntu2204server,8C8G100G。 节点分片部署192.168.50.5分片1副本1clickhouse-server/clickhouse-client/keeper192.168.50.6分片1副本2clickhouse-server/clickhouse-client/keeper192.168.60.7分片2副本1clickhouse-server/clickhouse-c…...
华为云购买弹性云服务器(教程)
配置弹性云服务器 基础配置 实例 操作系统...
Python异常检测- 单类支持向量机(One-Class SVM)
系列文章目录 Python异常检测- Isolation Forest(孤立森林) python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS) python异常检测-局部异常因子(LOF)算法 Python异常检测- DBSCAN 文章目录 系列文章目录前言一、On…...
基于SpringBoot+Vue+uniapp微信小程序的婚庆摄影小程序的详细设计和实现(源码+lw+部署文档+讲解等)
项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…...
NGAC访问控制系列三:低代码产品NGAC运用与算法运用
目录 一、基于NGAC的低代码模型权限管理方案 二、多策略访问控制系统限制内部访问的线性时间算法 1、概述 2、权限控制图遍历算法 一、基于NGAC的低代码模型权限管理方案 NGAC在低代码平台的权限决策模型:功能权限数据权限 案例:对于七巧低代码开发平台&…...
Unity3D 面试题收录
Unity3D 客户端面试题收录(持续更新~) 面试题收录 本文收录一些对于 Unity3D 客户端可能遇到的面试题(持续更新~),答案仅出于个人理解,如有偏差,希望指正。 Unity3D MonoBehaviour 生命周期…...
Jrebel热部署不生效解决
打开setting找到build底下的complier勾选 build project automatically 设置自动构建项目 打开setting找到Advanced Setting勾选Complier中的第一项 Jrebel panel中勾选需要热部署的项目模块 项目配置信息:Edit Configuration中进行编辑,配置如下图…...
软件测试学习笔记丨Selenium键盘鼠标事件ActionChains
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22515 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…...
CI/CD(持续集成与持续交付)流水线
集成 Jenkins、GitLab Webhook、Nexus 和 RabbitMQ 可以形成一个全面的 CI/CD(持续集成与持续交付)流水线,结合消息队列可以创建事件驱动的工作流。以下是配置这四个工具以实现一个基本的 CI/CD 流程的详细步骤。 前置条件 Jenkins、GitLab、…...
分布式光伏发电有什么优劣势
分布式光伏发电是指在离电力消费地点较近的地方,通过安装光伏发电系统来发电。这种系统通常用于屋顶、地面或其他建筑物上,相比于集中式光伏发电系统,它有一些独特的优势和劣势: 优势: 地理适应性: 分布式…...
Spring Boot框架中的IO
1. 文件资源的访问与管理 在 Spring Boot 中,资源文件的访问与管理是常见的操作需求,比如加载配置文件、读取静态文件或从外部文件系统读取文件。Spring 提供了多种方式来处理资源文件访问,包括通过 ResourceLoader、Value 注解以及 Applica…...
DBeaver连接Hive教程
hive shell:通过hive shell来操作hive,但是至多只能存在一个hive shell,启动第二个会被阻塞,也就是说hive shell不支持并发操作。 基于JDBC等协议:启动hiveserver2,通过jdbc协议可以访问hive,hi…...
Vue-Router源码实现详解
1.Hash模式 hash就是url中#后面的部分hash改变时,页面不会从新加载,会触发hashchange事件,去监听hash改变,而且也会被记录到浏览器历史记录中vue-router的hash模式,主要是通过hashchange事件,根据hash值找…...
程序员节日的日期是10月24日程序员日
程序员节日的日期是10月24日。 这一天被称为中国程序员日或1024程序员节,由博客园、CSDN等自发组织设立,旨在纪念程序员对科技世界的贡献。 程序员节日的由来和意义 1024程序员节的由来可以追溯到2010年,最初由网友提出设立一个…...
联邦学习中的数据异构性
在联邦学习(Federated Learning, FL)领域中, 异构数据(Heterogeneous Data) 是指不同客户端所持有的本地数据在特征分布、类别分布、数量等方面存在差异的数据。这种数据的异质性是联邦学习面临的一大挑战,…...
Python小程序 - 替换文件内容
1. 写入文件c:\a.txt 1)共写入10行 2)每行内容 0123456789 # 1 ls 0123456789 ln 10 with open("c:/a.txt", w,encodingUTF-8) as f:for i in range(ln):f.write(ls\n)######################################### 2 ln 10…...
k8s备份恢复(velero)
velero简介 velero官网: https://velero.io/ velero-github: https://github.com/vmware-tanzu/velero velero的特性 备份可以按集群资源的子集,按命名空间、资源类型标签选择器进行过滤,从而为备份和恢复的内容提供高度的灵活…...
LED户外屏:面对复杂环境的七大挑战
户外LED显示屏作为现代城市广告和信息传播的重要媒介,其应用范围越来越广泛。然而,与室内环境相比,户外环境的复杂多变对LED显示屏提出了更高的要求。本文将探讨户外LED显示屏在设计和应用过程中必须考虑的七个关键问题。 1. 高分辨率 户外LE…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
