目的:在台湾移动数据环境下,让原生IP卡能稳定提供公网访问(或可被外网访问的服务)。准备工作:SIM卡(已开通移动数据)、带有管理界面的4G/5G路由或USB网卡、能改路由/防火墙规则的设备(OpenWrt、MikroTik、Linux服务器或家用路由)、一台可远程访问的公网VPS(用于CGNAT绕过时备用)。
步骤:插入SIM至设备,连到设备的LAN获取内网地址;在路由或终端上访问 https://ifconfig.me 或 https://ipinfo.io 得到对外IP。对照路由器的“WAN IP”:若两者不一致或显示私人IP段(100.64.0.0/10等),说明处于CGNAT。
步骤:联系电信运营商申请“公网IP”或“固定公网IP”服务(有些运营商收费)。同时在APN设置中确认APN名称、PDP type(选择IPv4或IPv4/IPv6),保存并重启数据连接。手机端APN路径:设置→网络与互联网→移动网络→接入点APN→新建并保存。
步骤:登录4G/5G路由器/USB调制解调器管理页面,查找“桥接(Bridge / Passthrough)”或“Modem only”选项,开启并重启。此时运营商分配的公网IP应直接出现在后端路由器的WAN接口上,便于在路由器上做端口转发。
通用步骤:进入路由器的NAT/端口转发设置,添加规则:外部端口80 -> 内网目标IP 192.168.x.y:80;协议TCP;保存并启用。若为命令行(Linux/iptables):iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.8.100:80;iptables -A FORWARD -p tcp -d 192.168.8.100 --dport 80 -j ACCEPT;iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE。
OpenWrt:Network→Firewall→Port Forwards 新建;或使用uci命令。MikroTik:/ip firewall nat add chain=dstnat protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.88.10 to-ports=80。注意禁用不必要的ALG(如SIP ALG)以避免应用层干扰。
若无法申请公网IP:方案A — 使用VPS做反向隧道(frp/ngrok/ssh reverse)。示例ssh反向:在VPS上运行 ssh -R 2222:localhost:22 user@vps;将本地服务映射。方案B — 使用WireGuard/OpenVPN反向连接到VPS并通过VPS做端口转发(在VPS上配置iptables DNAT到WireGuard客户端)。步骤需在VPS上开通对应端口并写好防火墙规则。
步骤:1) 在外网使用 curl http://<公网IP>:<端口> 或 使用在线端口检测工具(canyouseeme.org)。2) 在内网目标主机上用 netstat -tulpen 和 ss 检查服务是否监听。3) 用 tcpdump 或 Wireshark 在路由器WAN接口抓包,确认外部TCP SYN到达WAN并被DNAT到内部IP。
最佳实践:仅开放必要端口,使用白名单源IP或VPN访问管理接口;在Linux上启用 fail2ban 限制暴力尝试;记录与轮询日志:/var/log/messages、iptables-log,定期审计端口转发规则与路由表,避免将内网不可信主机暴露到公网。
若端口未通:依次检查(1)WAN是否为公网IP,(2)路由器NAT规则是否生效,(3)主机防火墙(ufw/iptables)是否允许该端口,(4)应用是否绑定在正确的内网IP上,(5)抓包确认流量路径并定位丢包点。
答:可以使用反向隧道(frp/ngrok/ssh reverse)或将设备主动连到一台有公网IP的VPS(WireGuard/OpenVPN),通过VPS做转发。虽然免费方案(如部分ngrok免费隧道)存在速率或端口限制,但对测试与小规模服务可行。
答:优先争取运营商的公网IP或静态IP;使用支持桥接/透传的商用路由器;如果只能CGNAT,建议保持到VPS的常驻VPN/隧道并在VPS层做端口转发,同时用心配置重连策略与健康检查以保证稳定性。
答:禁用路由器的SIP ALG(常破坏VoIP协议);优先使用公网IP或SIP服务商的中继;给关键设备设置固定内网IP并做端口映射;若使用VPN,选择UDP-based协议(如WireGuard)以降低延迟。