You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让其他设备访问监听在127.0.0.1的二进制程序服务

如何让其他设备访问监听在127.0.0.1的二进制程序服务

嗨,这个问题我刚好碰到过!没法修改源码的情况下,用iptables或者nftables做端口转发确实是最直接的解决方案,下面给你详细的操作步骤:

方法一:使用iptables实现转发

首先得确保系统开启了IP转发功能:

  • 临时开启(重启后失效):
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  • 永久开启:编辑/etc/sysctl.conf文件,找到net.ipv4.ip_forward=1这一行,去掉前面的注释符号#,然后执行sysctl -p让配置生效。

接下来添加端口转发规则:
如果你的服务是TCP协议,执行以下两条命令:

iptables -t nat -A PREROUTING -p tcp --dport 5373 -j DNAT --to-destination 127.0.0.1:5373
iptables -t nat -A POSTROUTING -p tcp -d 127.0.0.1 --dport 5373 -j MASQUERADE

如果是UDP协议,把命令里的tcp替换成udp即可。

最后别忘了保存iptables规则,避免重启后失效:

# Debian/Ubuntu系列
iptables-save > /etc/iptables/rules.v4
# RHEL/CentOS系列
iptables-save > /etc/sysconfig/iptables

方法二:使用nftables实现转发(推荐,更高效)

nftables是iptables的下一代替代工具,配置更灵活高效。

编辑nftables的主配置文件(通常是/etc/nftables.conf),添加以下规则:

table ip nat {
    chain prerouting {
        type nat hook prerouting priority dstnat; policy accept;
        # 处理TCP流量
        tcp dport 5373 dnat to 127.0.0.1:5373
        # 处理UDP流量,如果不需要可以删掉这行
        udp dport 5373 dnat to 127.0.0.1:5373
    }
    chain postrouting {
        type nat hook postrouting priority srcnat; policy accept;
        # 对回环地址的转发流量做源地址伪装
        ip daddr 127.0.0.1 tcp dport 5373 masquerade
        ip daddr 127.0.0.1 udp dport 5373 masquerade
    }
}

保存配置后,重启nftables服务并设置开机自启:

systemctl restart nftables
systemctl enable nftables

额外注意事项

别忘记开放服务器的5373端口,避免被系统防火墙拦截:

  • 如果用ufw(Debian/Ubuntu):
    ufw allow 5373/tcp
    ufw allow 5373/udp
    
  • 如果用firewalld(RHEL/CentOS):
    firewall-cmd --add-port=5373/tcp --permanent
    firewall-cmd --add-port=5373/udp --permanent
    firewall-cmd --reload
    

这样设置好之后,其他设备就可以通过你的服务器公网/局域网IP:5373来访问这个原本只监听127.0.0.1的服务啦!

备注:内容来源于stack exchange,提问作者PaleNeutron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:40:27