警告

警告
  • 想像一個僅在本地主機上偵聽的伺服器應用程序,
  • 沒有設定可以在其他介面上偵聽
  • 想要強制讓它監聽其他接口,例如 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

相關內容