网络连接问题及网络连接工具的问题集
网络连接问题及网络连接工具的问题集
熟练解决网络问题是程序员们的必修课
安装proxychains4
直接通过包管理器安装proxychains
会安装proxychains3
,这是一个很旧的版本(其实能用;
不过我为了排除各种问题,例如解决软件过旧之类的疑虑,最后安装了proxychains4
,也被称为proxychains-ng
,这是一个最新的实现;
假如不慎和我一样,并非通过包管理器,而是通过下载源码并且以sudo make install
的方式安装的话,那么在/usr/local/bin
中可以找到它的程序,不过这种方式不受包管理器记录和控制,对于日后的维护工作来说不太方便;
另外,proxyresolv
功能默认没有安装,需要自己从源码的src/
中拷贝出来放到PATH
中,我的话是和proxychains4
的二进制文件放在一起了;
proxychains4的四种dns_proxy
设置
可以从 官方带有说明的配置文件 中获取到关于各种配置的详细说明
不设置任何
dns proxy
项目,也即不进行dns的代理,这种情况下,被proxychains4
代理的程序会擅自(可能程序自己不这么觉得)调用系统的DNS请求相关功能,查询自己要访问的目的主机的IP地址,交给proxychains4
的是一个IPv4地址;(然后proxychains4
将这个IPv4原样传给端口监听程序,那边没有识别出来,完美地走了通常的通道,仍然慢速甚至断流,鼓掌!啪啪啪啪啪啪啪)为什么不效仿浏览器,直接从socks5里面传domain-name过去,非要自己去搞那个什么IP-address?很好玩吗?
proxy_dns_old
模式,这种模式下,被代理的程序还是会发出DNS请求,只不过请求被proxychains4
截获,并且用一个proxychains4
程序自己的proxyresolv
脚本代为办理了,但是可能我技术水平有限,目前发现这个脚本只能设置DNS_SERVER=
,但是基于众所周知的原因,这种形式并不稳定;dns_proxy
模式,这种模式会发送domain-name
给对应的port
,但是,某些老旧的程序和脚本,例如我发现的(也是最常用的场合),oh-my-zsh
的upgrade.sh
并不支持这种模式,于是会卡在[proxychains] DLL init: proxychains-ng 4.16
这条提示,天长地久,直到海枯石烂;(23/04/20:和ssh有关的话,可以怀疑是BUG导致的)proxydns_daemon
模式,这目前是一个实验模式method 3. use proxychains4-daemon process to serve remote DNS requests.
this is similar to the threaded
proxy_dns
method, however it requiresthat proxychains4-daemon is already running on the specified address.
on the plus side it doesn't do malloc/threads so it should be quite
compatible with complex, async-unsafe software.
note that if you don't start proxychains4-daemon before using this,
the process will simply hang.
对于Linux内核版本大于等于5.9且
proxychains4
版本小于4.16-2(不等于)的使用者来说,如果要通过proxychains4
使用ssh
以及工作在ssh模式的git
,就必须使用这个模式,因为新版本
glibc
中增加的new close_range syscall
导致的此软件中close()
钩子发生问题,而这个问题被修复的版本是4.16-2
被自己挖过的坑hosts文件坑
之前一直纳闷为什么某些请求始终是IPv4,起初以为是工具或者网站的问题,仔细一看地址再一回忆,原来我改过hosts文件。改回来就正常了。
总结
我还是需要找一些终端下更靠谱的工具,解决各种不稳定和断流的问题。
实在不行的话恐怕还得自己动手?
Knighthana
2023/01/14
更新:
修改了
proxychains4的四种dns_proxy设置
一节的内容
原因是:
ssh (and thus git) doesn't work anymore with proxydns and latest glibc #439
proxychains-ng doesn't work with ssh on Ubuntu 22.04
Knighthana
2023/04/20
修改了
我只知道它存在,但是没有找到任何有关这个东西的说明文档,
部分
原因是,其实是有说明文档的,位于GitHub: proxychains-ng/src/proxychains.conf
Knighthana
2023/05/02