delphi - Indy TIdSocksServer 不转发流量
问题描述
我正在尝试创建一个 SOCKS 4/5 服务器,并且我想使用 IndyTIdSocksServer
组件作为基础。它看起来很简单,使用起来也很简单,但我一定错过了一些东西。
我将 aTIdSocksServer
放到了一个新表单上并配置了以下内容:
- 主动:真
- AllowSocks4:真
- AllowSocks5:真
- 绑定:0.0.0.0:43334
- 默认端口:80
- 截距:空
- IO处理程序:空
我添加了代码以'connect'
在TMemo
连接时显示:
procedure TForm1.IdSocksServer1Connect(AContext: TIdContext);
begin
Memo1.Lines.Add('connect');
end;
我在 Linux 主机上配置了 ProxyChains:
/etc/proxychains.conf
...
socks5 10.0.0.56 43334
当我执行应用程序并尝试使用 ProxyChains 进行连接时,我收到以下错误:
kelly@ubuntu:~/home$ proxychains curl www.google.com
ProxyChains-3.1 (http://proxychains.sf.net)
|DNS-request| www.google.com
|S-chain|-<>-10.0.0.56:43334-<><>-4.2.2.2:53-<--timeout
|DNS-response|: www.google.com does not exist
curl: (6) Could not resolve host: www.google.com
我可以确认连接已建立,因为文本已'connect'
添加到备忘录中。我还使用了 Wireshark 并观察了我的 Ubuntu 主机和 Windows 主机之间的三次握手和拆卸。
似乎问题在于流量正在到达 SOCKS 服务器,但没有被转发。我承认这是绝对最少的代码,但我的印象是该TIdSocksServer
组件会负责转发流量,并且我会添加支持功能,例如验证 SOCKS5 的凭据等。
解决方案
Remy 用我的代码发现了这个问题。为了验证服务器是否正在接收连接,我添加了一个写入 TMemo 组件的过程,这会导致死锁。要修复错误,我所要做的就是删除更新 TMemo 组件的过程。按预期工作。
推荐阅读
- c# - 将 avalonia 应用程序与某个自定义扩展名相关联,并在双击或使用 osX 中 finder 中的选项打开时处理文件
- autodesk-forge - 为什么更新的伪造查看器的模型浏览器隔离项目而不是选择?
- javascript - 如何防止用户输入重复的电子邮件?
- reactjs - styled-components:使用额外的样式扩展现有组件
- java - Can't import "import com.google.firebase.firestore.MetadataChanges" 原来的问题仍然没有答案
- python - Plotly:跟踪名称出现在 HoverInfo 之外
- python - 有没有办法在 Python 的 PySimpleGUI 中使用它们的键来获取输入?
- android - 一旦我添加了firebase依赖并得到重复的protobuf类错误
- vue.js - 如何在 vuejs 模板中使用 $refs 获取元素
- flutter - Flutter Listview/Card/Tile with Details 页面