具有两个外部接口(例如有线以太网和 Wi-Fi)的 Dante SOCKS 服务器

具有两个外部接口(例如有线以太网和 Wi-Fi)的 Dante SOCKS 服务器

我希望 Dante 能够透明地在两个接口enp4s0(有线以太网)和wlp3s0(Wi-Fi)之间进行选择,而不管它们的状态(开启或关闭)。也就是说

  • 当连接时,它应该选择enp4s0确实
  • wlp3s0添加时,它最好保持打开状态enp4s0(或者做一些其他聪明的事情,我不太关心这一点),
  • 当电线(enp4s0)断线时,即我正在旅行时,它当然应该切换到wlp3s0作为唯一剩下的选项。

现在我印象里以下配置应该可以解决问题:

internal: 0.0.0.0 port=1080
external: enp4s0
external: wlp3s0
external.rotation: route

然而,令我惊讶的是,当 eg 仅enp4s0向上和wlp3s0向下时,Dante 拒绝启动,并吠叫:

error: /etc/sockd.conf: problem on line ??? near token "wlp3s0": could not resolve hostname "wlp3s0": No address associated with hostname.  Please see the Dante manual for more information

我确实明白这一点,但这种限制背后没有技术原因。每次在有线和 Wi-Fi 之间切换时手动编辑此配置文件会很麻烦,而且是大忌。有没有巧妙的方法可以解决这个问题?

作为最后的手段,也许一些钩子脚本会修改配置文件?有这样的工具/脚本的例子吗?

答案1

暂时,我选择了goproxy,真是个宝贝!本质上,

$ goproxy socks -t tcp -p '0.0.0.0:1080'

无需绑定任何特定的传出接口即可完成此操作。


我在 Dante 服务器的官方邮件列表中收到了 Michael Shuldman(维护者)的以下回复sockd

也许没有技术原因,但在正常生产设置中(即在公司使用),指定 Dante 应使用不存在/未配置的 NIC(网络接口卡)通常表示配置错误。例如,从另一台具有不同 NIC 名称的服务器复制的 sockd.conf,或操作系统升级导致某些 NIC 重命名。

因此,最好立即纠正错误,以确保管理员能够立即注意到并解决问题,因为这不是我们的客户使用 Dante 的设置中预期的行为。

对于更多个人用途而非商业用途,可能应该更多地考虑像您这样的场景,但不幸的是,这并没有被优先考虑。

未来的一种替代方案可能是,只要在 sockd.conf 中配置了至少一个可操作的 NIC,就只打印警告并继续,而不是出错。这可能是可以相当容易实现的,而不会引起其他问题的风险很大,所以我想我会添加一条注释,以便在以后的版本中加以研究。

1.4.3 维护版本已经在测试中,所以不幸的是我认为目前还不能添加任何内容,但也许有人会看看 1.5.0。

相关内容