
泰国VPS运营商常见两类NAT:对等公网NAT(Carrier-Grade NAT, CGNAT)和私有NAT(VPS位于私有子网,通过上游公网网关做地址转换)。
第一,VPS没有独立公网IP时,无法直接监听公网端口,入站连接需依赖上游映射;第二,弹性端口数量受限,某些运营商只开放常见端口(如80/443/22);第三,UDP包在NAT下可能会被维护较短的会话超时时间影响;第四,双向NAT(双层NAT)会更复杂,需要在两层设备上配置映射。
识别时关注公网IP是否为运营商分配的可路由IP以及是否为CGNAT专用地址段(如100.64.0.0/10)。
第一步,在VPS上使用命令查看本机IP:ip addr或curl -s ifconfig.me对比;第二步,查看提供商控制面板的网络配置,确认是否标注“私有IP”或“CGNAT”;第三步,从外网(本地电脑或在线端口检测服务)尝试连接VPS目标端口,观察是否可达。
在本地终端执行:telnet <公网IP> 80或使用在线端口扫描(如canyouseeme.org)。若不能连通但VPS本地服务在监听,说明存在上游NAT或未配置映射。
如果返回的公网IP与VPS内网IP不一致且属于CGNAT段,通常需要向供应商申请公网IP或使用反向代理/隧道服务(如frp、Cloudflare Argo Tunnel)实现公网访问。
假设VPS有公网IP且内网服务在10.0.0.5:8080,目标将公网80映射到内网8080:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.5:8080
iptables -t nat -A POSTROUTING -j MASQUERADE(或者指定出接口:-o eth0 -j MASQUERADE)
创建nat表并添加规则:
nft add table ip nat
nft 'add chain ip nat prerouting { type nat hook prerouting priority 0 ; }'
nft add rule ip nat prerouting tcp dport 80 dnat to 10.0.0.5:8080
nft 'add chain ip nat postrouting { type nat hook postrouting priority 100 ; }'
nft add rule ip nat postrouting oifname "eth0" masquerade
配置后确认内核转发已启用:sysctl net.ipv4.ip_forward=1并持久化到/etc/sysctl.conf。
登录泰国VPS供应商控制面板,查找“网络”、“防火墙”或“端口映射/端口转发”选项,添加规则通常需填写:外部端口、公网协议(TCP/UDP)、目标内网IP与目标端口。保存并等待规则生效后从外网检测。
路由器管理界面->转发规则/虚拟服务器,填写外网端口与目标VPS内网IP:端口,同时建议绑定协议并设置固定内部IP或DHCP保留。若有双重NAT,需在上游设备和下游设备都做相应映射。
若面板不支持或无法申请公网IP,可使用反向代理或隧道服务(如frp、ngrok、Cloudflare Tunnel)将内网服务暴露到可访问的公网域名或端口。
步骤一,确认服务在VPS本地监听(ss -tulnp);步骤二,确认防火墙允许入站(iptables/nftables/ufw);步骤三,从外网端执行端口检测;步骤四,查看运营商是否有端口限制或安全组规则。
1) 仅开放必要端口并使用非标准高位端口减少被扫描风险;2) 使用iptables/nftables和云防火墙限制来源IP或速率限制(rate limiting);3) 对管理接口启用密钥认证与更改默认SSH端口或使用Bastion;4) 使用TLS/HTTPS和WAF保护Web服务;5) 定期审计端口映射规则并关闭不再使用的映射。
建议部署连接数限制、fail2ban、以及基于IP或GeoIP的访问控制。若检测到异常流量,可临时在云面板或路由器层级阻断源IP并联系供应商协助。