服务器厂商限制 8080 端口不可对外暴露,需实现:
38080 端口访问服务8080 端口bashsudo ufw status
若出现 ERROR: problem running ip6tables,关闭 IPv6:
bashsudo sed -i 's/IPV6=yes/IPV6=no/' /etc/default/ufw
sudo ufw reload
bashecho "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
bashsudo iptables -t nat -F sudo iptables -t nat -X sudo ufw reload
bash# 外部访问 38080 → 转发到内部 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 38080 -j REDIRECT --to-port 8080
# 内部访问 8080 → 转发到 38080 出口
sudo iptables -t nat -A OUTPUT -p tcp --dport 8080 -j REDIRECT --to-port 38080
bashsudo ufw allow 38080/tcp sudo ufw reload
bashsudo iptables -t nat -L -n
正常输出示例:
bashChain PREROUTING (policy ACCEPT) REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:38080 redir ports 8080 Chain OUTPUT (policy ACCEPT) REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 redir ports 38080
bashsudo ss -tulpn | grep 8080
有输出表示服务正常运行,无输出则需先启动服务。
bash# 测试内部 8080 → 38080 转发
curl localhost:8080
# 测试外部映射 38080 → 8080
curl localhost:38080
两条命令均能正常返回内容,说明转发生效。
bashsudo apt update sudo apt install -y iptables-persistent
bashsudo netfilter-persistent save
规则将自动在开机时加载。
服务器公网IP:38080 → 自动转发到内部 8080 服务localhost:8080 → 自动走 38080 端口原因:8080 端口没有服务在运行。
解决:先启动你的 Web/AI/应用服务,再测试端口。
解决:重新清空规则并添加:
bashsudo iptables -t nat -F PREROUTING OUTPUT
原因:云服务器安全组 / 厂商上层防火墙未放行 38080。
解决:去控制台安全组开放 TCP 38080 入方向。
解决:执行第五章规则持久化步骤,保存 iptables 规则。
本文作者:苏皓明
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!