内网穿透无法显示来访请求真实地址

我曾经尝试过很多免费的内网穿透。有的基于frp,有的基于Ngrok。当HTTP或TCP映射隧道被建立,也就是内网穿透服务开始了以后,本地HTTP(如HFS)或TCP服务都能正常收到映射而来的来访请求,但显示的IP地址都是127.0.0.1

frp这些内网穿透软件都是在传输层之上转发流量,如果你把frp客户端工具安装在你的TCP/HTTP服务器所在机器上,你收到的来访IP当然就是本机地址了。
请求流量从原客户端,到部署在公网上的内网穿透服务器比如frps,再到你的内网穿透客户端比如frpc,最后到你的TCP/HTTP服务器,在frps和frpc外都是在传输层以上转发的。
除非是工作在网络层工具,直接改网络转发规则,比如修改linux iptables规则,但原始流量如果是从内网出到公网,仍然可能被网关进行masquerade伪装ip。
要想获得原始来访IP,只能双方在业务层约定好,在数据里夹带着原IP传输。