I'm 赵一开, a developer.
是的,它可以使两台均在NAT/防火墙后的机器、不需要任何第三方服务器、不需要端口转发,进行通信。原理基于这篇Paper,pwnat就是基于这个方法的一个实现,我用Python实现了一个简易的版本pypwnat。
仅有的要求:
59.66.1.1
,ping之无回应即可)59.66.1.1
发送一个ICMP echo request(ping),当然,什么都不会发生,因为不会有回应59.66.1.1
之间的一个节点,告诉服务器端你发送的ping超时了(就想traceroute的原理),当然,这个包会被服务器端的NAT/防火墙通过并转发给它服务器端:
hatsune ~ > sudo python2 pypwnat.py -s
[MainThread] DEBUG : Sending echo request with id=42, seq=42.
[MainThread] DEBUG : Got ICMP response!
[Thread-1] DEBUG : Handling response in new thread.
[MainThread] DEBUG : Sending echo request with id=42, seq=42.
[Thread-1] INFO : Got response from 101.5.109.89
客户端:
Blah-MacbookAir ~/D/p/pypwnat (master)> sudo python pypwnat.py -c 106.186.24.147
[MainThread] DEBUG : Sending hello message via UDP.
[MainThread] DEBUG : Sending time exceed message.
[MainThread] INFO : Got UDP response!
Hello from pypwnat
Unable to load comments, check your (GFW Free) Internet connectivity.