Ubuntu虚拟机/wsl2利用proxychains实现代理

proxychains is a UNIX program, that hooks network-related libc functions in dynamically linked programs via a preloaded DLL and redirects the connections through SOCKS4a/5 or HTTP proxies.

VMware虚拟机如何安装/配置proxychains#

条件#

  • 物理机能够科学shang网(我使用的是clash)
  • 设置代理软件,使其允许来自局域网的连接(clash -> General -> Allow Lan)

安装proxychains#

# 如果没有指明版本则默认安装proxychains3
sudo apt install proxychains

修改配置文件#

默认的配置文件为/etc/proxychains.conf

proxychains有三种代理模式,默认为strict_chian模式

  • dynamic_chain - 依次经过ProxyList中定义的所有节点,死节点会被忽略,且至少有一个活节点才能工作
  • strict_chain - 依次经过ProxyList中定义的所有节点,所有节点都必须是活节点
  • random_chain - 从ProxyList随机选择一个节点或多个节点(数量由chain_len定义)

将代理协议、物理机ip、clash的端口写入ProxyList

image.png

使用proxychains#

# 以curl为例
proxychains curl google.com

解决libproxychains.so.3无法预加载的问题#

  1. 找到libproxychains.so.3的路径

    find /usr/ -name libproxychains.so.3 -print

  2. 将该路径写入/usr/bin/proxychains文件

    export LD_PRELOAD=/usr/lib/libproxychains.so.3

wsl2配置proxychains#

wsl2通过虚拟网卡与windows主机通信,而且每次重启windows之后虚拟网卡的ip会发生改变。每次重启之后都需要重新配置proxychains,比较麻烦。这篇博客提供了一种自动配置proxychains的方法。

动态获取windows的ip#

ip route命令可以查看linux系统的路由表。因为wsl2的流量是经过windows的,所以默认路由所指的ip即为windows的ip。

提取windows的ip

ip route | grep default | awk '{print $3}'

安装proxychains4#

普通用户没有写默认配置文件的权限(只有root可写),所以需要另辟蹊径。proxychains4可以指定任意文件作为配置文件,我们可以创建一个普通用户权限的文件作为配置文件,然后再利用脚本自动更新该配置文件。

安装proxychains4

sudo apt install proxychains4

生成用户配置文件#

将默认配置文件复制到用户的根目录

sudo /etc/proxychains4.conf ~/.proxychains.conf
sudo chown username ~/.proxychains.conf

修改.proxychains.conf文件#

按照前面介绍的方法,配置好.proxychains.conf

配置~/.bashrc文件#

在~/.bashrc末尾添加如下代码

# 获取windows的ip
export win_ip=`ip route | grep default | awk '{print $3}'`
export clash_port='23785'
# 删除包含clash_port的行
sed -i '/'${clash_port}'/d' ~/.proxychains.conf
# 重新写入
sed -i '$a socks5 '${win_ip}' '${clash_port} ~/.proxychains.conf
# 设置proxychains的别名,并使用指定配置文件
alias pc='proxychains -q -f ~/.proxychains.conf'

之后重启终端即可,或者使用命令source ~/.bashrc使配置立即生效

测试#

pc curl www.google.com

作者:yuxiayizhengwan

出处:https://www.cnblogs.com/yuxiayizhengwan/p/15132401.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   雨下yi整晚  阅读(1977)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示