UDP over Socks5 实现全局透明代理

Socks5代理协议很强大,不光可以实现HTTP/HTTPS代理的TCP隧道代理功能,类似connect,还可以实现HTTP代理不能做到的UDP代理功能。

要知道UDP代理的重要过程,以方便我们排查错误,我们还需要了解Socks5协议对UDP代理方式的流程规定,百度到一篇讲的很好的文章,大家可以参考。

https://blog.csdn.net/whatday/article/details/40183555

我们先来仔细看一下这个过程

首先,我们可以看到,Socks5代理服务器一般只开放一个TCP端口,所以我们在代理服务器上,使用netstat命令是看不到其开放了UDP端口的。因为Socks5服务端通过TCP端口接收客户端发送的代理请求指令,然后分配一个UDP的端口,再通过刚才TCP的连接把这个UDP的IP和端口发送给客户端。客户端下一步只需将UDP包加上特制包头,向这个UDP的端口发送即可。

如果我们做一个原生支持Socks5代理的程序,了解这个过程就可以了,但是如果再工作中遇到第三方的程序,本身不支持UDP代理的,而我们又在公司内网,断了互联网连接,只能通过一个Socks5服务器上网的,该怎么办呢?

UDP协议应用场景不是很多,一般是DNS,音视频聊天,游戏信令等场合。加入我们在内网使用qq或钉钉,虽然其可以配置socks5代理,但是这些软件本身不支持UDP的socks5代理,也就是我们只能聊天,不能进行视频语音通话了。此时,我们就需要透明代理。

支持Socks5的透明代理软件,我最喜欢用的就是redsocks2了,其官方地址为:https://github.com/semigodking/redsocks

redsocks2下载源码之后,安装gcc,然后使用make命令就可以直接在ubuntu或者centos上编译,非常方便,但是注意,要实现UDP协议的透明代理,要使用2019年以前的版本,不可以使用2020的版本,因为作者merge了另一名开发的代码后,解析配置文件会出现错误

下面开始实操

首先我们启动一个Socks5代理服务器,我用的是goproxy,其他开源软件使用dante也行

proxy socks -t tcp -p "0.0.0.0:1080" -g xxx.xxx.xxx.xxx

 注意这里-g参数要填你Socks5服务器本身的IP地址,如果有多个IP,必须是透明代理的机器可以访问到的IP地址,也可以不填。这个参数其实就是上图Socks5协议中,UDP穿透回复给发起人的信息。

然后我们找另一台linux机器,CentOS或ubuntu都可以,因为iptables mangle表的限制,我们需要把跑redsocks2的服务器当作路由器来使用,所以需要打开linux内核的转发功能

开启Linux的内核转发方法是,打开/etc/sysctl.conf这个文件,取消掉 net.ipv4.ip_forward=1 这一行的注释.
然后执行

sudo sysctl -p

使修改后的文件配置立即生效。

然后,我们编辑redsocks2的配置文件如下,注意这里的配置文件版本为2019年及之前的

base {  log_debug = on;   log_info = on;daemon = off;redirector = iptables;}redudp {             local_ip = 192.168.1.16; //localhostlocal_port = 12345; //port I will route traffic toip = xxx.xxx.xxx.xxx; //socks5 hostport = 1080; //socks5  porttype = socks5;  //its socks5 server//login = rc4-md5;  //not used//password = "your_passwd";  //not usedudp_timeout = 20;
}

然后,我们就可以开始使用iptables配合tproxy开始进行透明代理的转发了。好处是ubuntu、centos哪怕最小化安装,都有tproxy内核模块了,但是openwrt需要单独安装哦

ip rule add fwmark 0x01/0x01 table 100
ip route add local 0.0.0.0/0 dev lo table 100iptables -t mangle -N SSUDP
iptables -t mangle -A SSUDP -d 127.0.0.0/24 -j RETURN
iptables -t mangle -A SSUDP -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A SSUDP -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A SSUDP -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A SSUDP -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A SSUDP -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A SSUDP -d xxx.xxx.xxx.xxx -j RETURN
iptables -t mangle -A SSUDP -p udp -j TPROXY --on-port 12345 --tproxy-mark 0x01/0x01
iptables -t mangle -A OUTPUT -j SSUDP

上面的xxx.xxx.xxx.xxx就是你Socks5服务器的地址

然后,我们启动redsocks2

redsocks2 -c ./red2.conf

由于mangle表只能修改prerouting链,所以我们无法在本机做测试,我们需要找到一台其他机器,将redsocks2程序所在服务器IP设置为默认网关,就可以测试了,如下我使用nslookup命令做DNS的测试

然后redsocks2的日志如下(如果没有日志说明前面iptables配置的有问题,如果有日志没有DNS结果说明Socks5服务器有问题或redsocks2配置有问题)

 

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

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

相关文章

Squid 代理服务之透明代理服务器架构搭建

文章目录 1. 服务器配置2. Squid 服务器部署2.1 修改 Squid 配置文件2.2 开启路由转发,实现本机中不同网段的地址转发2.3 修改防火墙规则 3. 客户端访问测试 1. 服务器配置 服务器主机名IP地址主要软件Squid 服务器squid_server外网ens33:192.168.10.20…

openwrt 透明代理上网

最近搞了个openwrt的router,以往都用代理来上网,但是代理每次都要设置端口啊,代理IP这些,觉得很心烦。现在好了,用openwrt搭建一个透明代理,让所有接上这个router的人都通过代理上网,还可以对他们监控和进行一些规则设定: ) 我的Local proxy是这样的,如图: 我的squi…

正向代理,反向代理和透明代理的原理和区别!

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://z00w00.blog.51cto.com/515114/1031287 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早…

Linux开启路由转发功能(透明代理环境搭建)

环境: 客户端: 地址 -- 192.168.1.230 网关 -- 192.168.1.56 代理服务器: eth0 -- 192.168.1.56 eth1 -- 192.168.2.56 服务器: 地址 -- 192.168.2.230 网关 -- 192.168.2.56 要求…

Ubuntu编译运行Redsocks2实现透明代理

之前我写过一篇文章《WiFi热点分享ShadowSocks流量实现全局透明代理》里面详细解释了如何使用SSH(或Shadowsocks等其他socks5代理)redsocksiptables实现Ubuntu笔记本电脑分享一个Wifi,然后让所有连接这个wifi的客户端都实现透明代理(科学上网&#xff09…

透明代理和反向代理

 透明代理和反向代理 传统网络: 透明代理: 实现机制:划分Vlan 反向代理: 实现机制: 配置DNS解析以及WAF中配置防护Web服务器的N…

Squid 正反向 / 透明代理

squid是什么? Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得…

透明代理(NAT)

透明代理的实现目前Linuxn内核提供两种实现的方式:NAT和TPROXY。Nat 方式其实就是内内核通过地址转换实现的;而 TPROXY 是内核通过对设置的数据包打标记,然后通过策略路由将打标记的数据包重定向到本地监听进程上。此次我们借助iptables的nat…

akshare量化交易数据集的获取

本文介绍量化交易的数据集:akshare包的安装和调用。akshare的 数据比较全,可以获得 股票、期货、外汇、基金、债券 的历史和实时数据,而且是免费的。 安装 !pip3 install akshare --upgrade 运行结果: 调用包 import pandas as…

突破8140亿美元的加密货币市场, 2019年将走向何方?

作者 | Ash Egan 编译 | Guoxi 2010 年 5 月 22 日,程序员 Laszlo Hanyecz 用一万个比特币购买了两个披萨,相当于一个比特币仅价值 0.003 美分,加密货币第一次有了价值。 2017 年年中,加密货币市场总价值突破千亿美元,…

时间序列预测某加密货币

加密i货币是一种加密和去中心化的数字交换媒介。许多人使用加密货币作为一种投资形式,因为它即使在短时间内也能带来丰厚的回报。比特币、狗狗币是当今流行的加密货币之一。如果你想知道如何通过机器学习预测任何加密货币的未来价格,这篇文章适合你。在本…

中国巨头在NLP领域的大模型布局

什么是大模型? 大规模模型(large-scale model)是近年来人工智能领域的一个热点话题,因为它们可以对自然语言处理(NLP)和其他任务进行更准确和深入的处理。由于大模型需要庞大的计算资源和数据支持&#xf…

模拟股票交易:买入、卖出

1.1创建Strategy模块 此模块用于策略开发,产生交易信号。 1.2创建周期选股策略 什么为周期?简单来说,就是周四买入,周一卖出。这就是一个周期。 1.3生成交易信号 明确哪个交易日买入 哪个交易日卖出,用1和-1 标注。帮…

十大优秀编程项目,让你的简历金光闪闪

全文共3241字,预计学习时长6分钟 被问到如何学习编程时,最常听到的问题就是:“有没有什么新项目的好点子?” 一些老套的答案有:“做一个象棋游戏”或者“命令行界面”。 这些答案没有错,但这些例子不符合现代编程的需要。现代软件编写需要经常使用软件服务化(SaaS)和…

多测师肖sir_高级金牌讲师_简历制作

一、简历制作 1、先查找1个合适的模板 1.1比如伍佰钉,wps,我这里收集的模板,以前学长学姐的简历 要求:1.模板格式要易于编辑和修改,网上有免费的模板; 2、需要太过于个性化(颜色,模块,字体(建议:小四,五号)) 3、班级同学之间的简历不重复(模板一样+技能一样) 4…

基于springboot的简历系统的实现

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,简历系统当然也不能排除在外。简历系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用…

基于Python技术简历整合分类猎头系统的设计与实现

开发工具(eclipse/idea/vscode等):pycharm 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字): 结构设定. 设置会员和管理员两个身份,会员登录可以查看修改自己账号的个人信息,新…

产品经理/互联网非技术岗如何写一份好的简历?

本文将以互联网非技术岗的简历撰写为主题,分享简历的本质与关键,以及如何写一份合格的简历、简历上需要避开的坑。希望大家看完后能解决90%的简历问题。 文章内容概括: 简历的本质和关键如何写一份有效简历必须避开的地雷用了3年的word简历…

基于SpringBoot的简历管理系统

项目背景 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,简历系统当然也不能排除在外。简历系统是以实际运用为开发背景,运用软件工程原理和开发方法,…

PHP 图片去除水印 去除logo

使用插件 ffmpeg 点这里 不使用插件 也可以 <?phpfunction CLEAR_ICO($filename,$savename,$Clear_W,$Clear_H,$Clear_X,$Clear_Y){// $filename ;//读取图片名// $savename ;//保存图片路径// $Clear_W ;//去除水印宽// $Clear_H 30;//去除水印高// $Clear_X 254…