我希望 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。