Linux使用proxychains-ng代理应用

基本情况

公司的Linux服务器在私有网络内,因为业务比较敏感,运维部门对各个网络边界进行了安全加固,设置了严格的安全规则。因此在互联网出口侧设置了一台前置机,部署了tinyproxy代理程序。当内部服务器需要访问公网地址时,设置环境变量http_proxy指定代理到固定服务器,通过固定服务器再端口转发至代理服务器。

问题描述

开发在调试外部公网接口过程中发现虽然设置了代理,但是还是无法调用到公网的接口。

问题排查

  • 查看应用日志提示:java.net.ConnectException: Connection refused (Connection refused)
  • 使用Curl命令测试接口地址可以正常返回状态码。
  • 查看代理服务器日志发现调用公网接口时未产生新的日志。

很明显,应用在调用公网接口时并应用没有正常走到代理服务器上去。也就是说linux环境变量设置的代理并非全局代理,需要强制应用使用指定应用的代理服务器。

寻求方案

简介

ProxyChains 是一款适用于linux系统的网络代理设置工具。强制由任一程序发起的TCP连接请求必须通过诸如TOR 或 SOCKS4, SOCKS5 或HTTP(S) 代理。允许TCP和DNS通过代理隧道,并且可配置多个代理。配置完成后只需在运行的命令之前加上proxychains4就可以通过代理进行网络访问了。

proxychains新的版本已经称为proxychains-ng。项目地址: https://github.com/rofl0r/proxychains-ng

安装

下载最新的proxychains-ng版本,解压后编译安装

tar -xvf proxychains-ng-4.16.tar.xz 
cd proxychains-ng-4.16
./configure 
make
make install
cp src/proxychains.conf  /etc/

配置及使用

  • 配置文件的位置为/etc/proxychains.conf。
  • 配置文件中localnet开头为不走代理的本地地址,根据你的实际需求取消这些行的注释
  • 配置文件最后加上你的代理服务器信息

    格式:

    socks5/socks4/http [IP] [Port] [UserName] [Password]

设置完成后在应用启动命令之前加上proxychains4。所有问题完美解决

参考文献

Java网络和代理

Linux环境下使用ProxyChains设置代理上网

本文链接 https://blog.kimi360.top/e2efe6bded91/

本文采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。