4种NAT打洞:完全锥体、IP受限型、(IP和)端口受限型、对称型。其三种都很好理解,唯独对称型比较不好理解,这里做些自己的理解。
对称型:是指UDP打洞时,一个请求对应一个映射关系。
clientA (x,y) -----------> 网关(A,b)------------>S(m, n)
clinetB(p,q) -----------> 网关(C,d)------------>S(m, n)
clientA向server S发起连接时,告诉S其公网地址和端口为 A,b
clientB向server S发起连接时,告诉S其公网地址和端口为C,d
假设server S分别告知clientA、clientB对方地址,并且clientA、clientB分别发起一条向对方的请求(该请求一定无法到达),按照对称型NAT规则,此时会有这样一个情况:
对于A的网关,将会新增一条如下的映射:
clientA (x,y)-----------> 网关(A,t)----------------->clientB (C, d)
对于B的网关,将会新增一条如下的映射:
clientA (p,q)-----------> 网关(C,r)----------------->clientA (A,b)
请注意:clientA (x,y)-----------> 网关(A,t)和clientA (p,q)-----------> 网关(C,r)
由于对称型的NAT原理,由于端口映射的随机性,新的端口我们不得而知,因此对称型的NAT在这种情况下是无法打通的