广域网上的两个没有公网IP的内网机器之间可以运行strongswan吗? (by quqi99)

作者:张华 发表于:2025-06-27
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

strongswan是site-to-site类型的, 一般要求两端都有公网IP, 要是没有公网IP怎么办? 例如: 机器beijing位于北京的一个内网(如IP=192.168.2.2/24), 机器guangzhou位于广州的一个内网(如IP=192.168.3.2/24)里. beijing与guangzhou两台机器都位于NAT后, 且这两个机器都没有公网IP, 这种情况可以运行strongswan将192.168.2.0/24与192.168.3.0/24两个子网连通吗?

ipsec的原始esp协议到了nat路由器认不出, nat_traversal|forceencaps=true意为在esp外再用udp包一层(增加UDP封装)从而通过udp实现穿越NAT的能力.
不必打开UDP端口50。如果没有NAT穿越,需要允许IP协议50 ( ESP ),但是如果涉及NAT,ESP数据包会封装UDP,因此打开UDP端口500和4500就足够了。

下面是AI的说话, AI说能, 但还没做实验, 先记录一下, 有时间再弄:

至少有一端能主动发起连接(strongswan支持NAT traversal, 允许在NAT网络中建立隧道), 只要beijing或guangzhou能访问互联网并能主动发起UDP/500/4500流量, 就可以作为主动发起方(initiator), 如果两端都在NAT后, 建立选择一个固定的作为initiator, 另一个作为responder.
两端的防火墙/NAT要允许UDP 500/4500端口通过(大多数家用或企业路路由器都支持转发这些端口用于ipsec)
使用ddns发布两端的外网IP

#beijing ipsec.conf
conn to-guangzhou
    left=%defaultroute
    leftid=@beijing.local
    leftsubnet=192.168.2.0/24
    right=guangzhou.ddns.net
    rightid=@guangzhou.remote
    rightsubnet=192.168.3.0/24
    keyexchange=ikev2
    auto=start
    dpdaction=restart
    dpddelay=30s
 
cat /etc/ipsec.secrets
@beijing.local @guangzhou.remote : PSK "your-pre-shared-key"
   
#guangzhou ipsec.conf
conn from-beijing
    left=%defaultroute
    leftid=@guangzhou.remote
    leftsubnet=192.168.3.0/24
    right=%any
    rightid=@beijing.local
    rightsubnet=192.168.2.0/24
    keyexchange=ikev2
    auto=add
    dpdaction=restart
    dpddelay=30s
    
cat /etc/ipsec.secrets
@guangzhou.remote @beijing.local : PSK "your-pre-shared-key"
    
#run it on both side
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT
sudo iptables -A FORWARD -s 192.168.3.0/24 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE

#debug
ipsec statusall 和 journalctl -u strongswan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quqi99

你的鼓励就是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值