使用strongswan修改协商端口

最近遇到个事情,有位朋友希望通过修改IKE的知名端口,他把IKE的协商端口改为1512。VPN可以建立,但是无法上网。
根据研究,发现中间有NAT,手机后续的NAT报文目的端口都是1512,然后内核不解密,直接丢该charon,charon就丢
掉了。
此时通过ip xfrm state看sa,发现encap里的端口就是1512。
后来尝试把nat-port也配置上个别的,发现还是不行,ip xfrm state里的端口还是1512,而且手机发的目的端口也还是1512.
再后来,尝试通过server做nat转换。
即仅设置IKE port为1512,然后server做一下下面的nat转换:
iptables -t nat -I PREROUTING -p udp --dport 1512 -j REDIRECT --to-ports 4500
这样就能上网了。其中这个条目不小心加了2次,没影响。
另外,此时再看xfrm state,发现encap端口变为了4500,但是抓包仍是1512的端口--这里不是很清楚,至少能上网了,就没有深究。
毕竟之前也遇到过xfrm设置udp端口却发现策略没有正确匹配的事情

但这个方法,可能会存在问题,如果所有的报文都变为了4500,那么 IKE的报文就无法正确处理了。重协商肯定就不行了。
必须重新建链。
发布了54 篇原创文章 · 获赞 1 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/xingyeping/article/details/51745110