警告

警告
  • 想象一个仅在本地主机上侦听的服务器应用程序,
  • 没有设置可以在其他接口上侦听
  • 想要强制让它监听其他接口,例如 eth0

绑定程序(libindp.so) 可以做到这一点。但是,它无法从 Debian 存储库中获得,这使得使用起来很不方便。因此我想问,是否有任何bindp 的替代方案来实现相同的目标?

答案1

这个问题已经被问过十几次了,一个可以接受的答案是使用 iptables:

sysctl -w net.ipv4.conf.all.route_localnet=1 
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080

第一个命令是允许从外部网络到内部网络的重定向(出于安全原因禁用),第二个命令是进行重定向(当然,您必须根据您的具体情况调整端口,而您还没有这样做)无论如何解释)。

另一种解决方案可能是使用OpenSSH本地端口重定向,它允许您执行基本相同的操作,但无需禁用内核保护(我不会详细说明这一点,因为其他解决方案已经可以使用)。

根据本地绑定服务使用的协议,您还可以用作nginx反向代理或sshl多路复用器。

最后,socatstunnel和朋友也可以用于此目的。

iptables 解决方案的优点是它位于内核中,因此速度更快。

警告

由于SE是一个系统,准确回答被认为比尝试实际解决问题更好,所以我尝试回答这个问题。然而,鉴于您的描述缺乏细节,我怀疑您实际上属于以下两种情况之一:

  1. 要么该服务实际上可以配置为侦听可通过单词访问的接口,但您不知道如何操作,在这种情况下,您应该描述该服务本身并询问如何使其从外部可用。
  2. 或者出于技术或安全原因,该服务实际上并不意味着可以通过文字访问。

但如果我不知道它是什么服务,我就无法更准确。

答案2

索卡特工具 (Debian 软件包) 可以帮助:

socat -d -d TCP4-LISTEN:80,bind=192.168.1.1,fork TCP4:localhost:80

答案3

借助 IPv6iptables 解决方案不起作用。您可以使用@Artem的解决方案,例如

sudo socat TCP6-LISTEN:80,bind=[2001::beef],fork TCP6:[2001::beef]:8080

相关内容