我试图直接连接(没有第三方服务器)我的电脑到朋友的电脑。我们都在ISP路由器的后面,并希望(作为一个挑战!)在不修改路由器配置的情况下进行连接。
myself$ nc -p 7777 public-ip-friend 8888
friend$ nc -p 8888 public-ip-myself 7777
和UDP打孔:
myself$ nc -u -p 7777 public-ip-friend 8888
friend$ nc -u -p 8888 public-ip-myself 7777
但他们都没用。
How来解决这个问题?
注意: VPS (而不是NAT后面)<->我的家用计算机(仍然在路由器后面)使用相同的方法工作。
发布于 2018-02-05 10:18:38
有时在问题中给出的命令会起作用,但有时却不能。
原因如下。
让我们说:
在我的计算机上执行此操作时:
myself$ nc -u -p 7777 198.51.100.27 8888
在NAT翻译之前,我们有:
srcip srcport destip destport
192.168.1.10 7777 198.51.100.27 8888
但是,在家庭路由器NAT翻译之后,我们有:
srcip srcport destip destport
203.0.113.10 55183(*) 198.51.100.27 8888
也就是说,源IP由NAT but重写,也就是源端口。
因此,在我的家庭防火墙(接受来自我朋友198.51.100.27的通信量)中确实会创建一个“漏洞”,但是端口55183和端口 7777的<#>not。
这解释了为什么当我的朋友这样做时它会失败:
friend$ nc -u -p 8888 203.0.113.10 7777
注意(*):在某些情况下,路由器可能保持srcport=7777,而不是将其重写到像55183这样的随机端口。在这种情况下,问题中给出的解决方案可能会奏效。但这是随机行为!
https://unix.stackexchange.com/questions/421471
复制相似问题