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

Ubuntu 20系统下如何通过iptables或CSF实现指定域名的请求端口转发(适配不可修改API地址的编码文件场景)

Ubuntu 20系统下如何通过iptables或CSF实现指定域名的请求端口转发(适配不可修改API地址的编码文件场景)

我完全懂你的处境——编码后的文件没法修改里面的API地址,本地网络又连不上目标服务,只能靠SSH端口转发绕路,现在就差把对目标域名的HTTPS请求自动转到你本地的9999端口对吧?下面我给你分别讲讲用iptables和CSF两种方案的具体操作:

一、用iptables直接实现

因为你已经把my.api.site.com在/etc/hosts里指向了127.0.0.1,所以本地程序发起的请求其实是打向回环地址的443端口,我们只需要把这个请求转发到本地的9999端口(也就是你SSH隧道监听的端口)即可:

  1. 添加DNAT转发规则
    执行这条命令,把目标为127.0.0.1:443的本地请求重定向到127.0.0.1:9999:
iptables -t nat -A OUTPUT -d 127.0.0.1 -p tcp --dport 443 -j DNAT --to-destination 127.0.0.1:9999
  1. 确保转发权限(可选,但保险)
    虽然本地回环的转发默认是允许的,但还是可以加这条规则确保无异常:
iptables -A FORWARD -d 127.0.0.1 -p tcp --dport 9999 -j ACCEPT
  1. 保存规则,避免重启失效
    Ubuntu 20可以用下面的命令把规则持久化:
iptables-save > /etc/iptables/rules.v4

二、用CSF(ConfigServer Security & Firewall)实现

如果你平时用CSF管理防火墙,直接在CSF里加自定义规则就行,不用手动操作iptables:

  1. 编辑CSF的nat规则配置文件
    打开/etc/csf/csf.postnat(这个文件专门用来添加nat表的自定义规则,CSF启动时会自动加载):
nano /etc/csf/csf.postnat
  1. 添加转发规则
    在文件末尾加入和iptables一样的DNAT规则:
iptables -t nat -A OUTPUT -d 127.0.0.1 -p tcp --dport 443 -j DNAT --to-destination 127.0.0.1:9999
  1. 重启CSF让规则生效
csf -r

额外注意事项

  • 你的SSH隧道要保持运行,建议加-fN参数让它后台静默运行:
    ssh -fNL 0.0.0.0:9999:my.api.site.com:443 root@remote
    
  • 测试的时候可以用curl -v https://my.api.site.com/v1,看请求是否成功走了本地的9999端口;也可以用netstat -tulpn | grep 9999确认SSH在正常监听该端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:18:03