strongswan (by quqi99)

发布于:2025-07-17 ⋅ 阅读:(18) ⋅ 点赞:(0)

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

注意: 下列还未调通, 有时间再弄.

问题

两个虚机如下, 现在从i1(dev_net=10.149.142.107, 192.168.10.122)上可以ping 192.168.12.2, 现在的需求是在bastion(10.149.144.44)上也可以直接ping 192.168.12.2, 那需要在i1与bastion上安装strongswan(site-to-site)解决.

$ openstack server list |grep -i active
| 6fa7e3d4-f327-43b8-86aa-e9a22df515e6 | cirros | ACTIVE | net1=172.20.1.215, 192.168.12.2                                                                   | cirros-0.4.0 | m1.tiny  |
| 654d9bb0-3099-4852-9699-58ea186c7e57 | i1     | ACTIVE | dev_net=10.149.142.107, 192.168.10.122; ext1=192.168.12.6; ext2=192.168.12.14; ext3=192.168.12.21 | jammy        | m1.small |

$ ssh -i ~/testkey.priv ubuntu@$FIP -- ping 192.168.12.2 -c1 |grep from
64 bytes from 192.168.12.2: icmp_seq=1 ttl=63 time=0.322 ms

步骤

1, 在i1与bastion上安装strongswan( sudo apt install strongswan)

2, 两边生成psk

$ openssl rand -base64 32
3kTLtKEi7fywXlhJZda8mI+S/tphJjvU2dz54qf7rFo=

#or: echo ": PSK \"mysecretpsk123\"" | sudo tee /etc/ipsec.secrets
on i1 $ cat /etc/ipsec.secrets
10.149.142.107 10.149.144.44 : PSK "3kTLtKEi7fywXlhJZda8mI+S/tphJjvU2dz54qf7rFo="
on bastion $ cat /etc/ipsec.secrets
10.149.144.44 10.149.142.107 : PSK "3kTLtKEi7fywXlhJZda8mI+S/tphJjvU2dz54qf7rFo="

3, /etc/ipsec.conf on i1, strongswan是双向协商的,
leftsubnet 表示 本端的子网范围(即我允许通过的vp流量来源);
rightsubnet 表示 对端的子网范围(即我允许通过vp去往的目标);
注意: i1只是一个虚机, 它的fixed-ip是192.168.10.122, 它的FIP才是10.149.142.107 (这里用 left=%defaultroute 避免写192.168.10.122)

cat << EOF |sudo tee /etc/ipsec.conf
config setup
    uniqueids=no
conn bastion-tunnel
    auto=start
    type=tunnel
    keyexchange=ikev2
    authby=psk
    left=%defaultroute
    leftid=192.168.10.122
    leftsubnet=192.168.12.0/29,192.168.12.8/29,192.168.12.16/29
    right=10.149.144.44 
    rightid=10.149.144.44 
    rightsubnet=0.0.0.0/0
    ike=aes256-sha1-modp1024!
    esp=aes256-sha1!
    ikelifetime=86400s
    lifetime=3600s
EOF

4, /etc/ipsec.conf on bastion

cat << EOF |sudo tee /etc/ipsec.conf
config setup
    uniqueids=no
conn i1-tunnel
    auto=start
    type=tunnel
    keyexchange=ikev2
    authby=psk
    left=10.149.144.44 
    leftid=10.149.144.44
    leftsubnet=0.0.0.0/0
    right=192.168.10.122
    rightid=192.168.10.122
    rightsubnet=192.168.12.0/29,192.168.12.8/29,192.168.12.16/29
    ike=aes256-sha1-modp1024!
    esp=aes256-sha1!
    ikelifetime=86400s
    lifetime=3600s
EOF

5, debug tips

sudo ipsec restart
sudo ipsec statusall
sudo ufw allow 500/udp
sudo ufw allow 4500/udp
PROJECT_ID=$(openstack project show --domain Default admin -f value -c id)                                                                                                        
SECGRP_ID=$(openstack security group list --project ${PROJECT_ID} | awk '/default/ {print $2}')
openstack security group rule create --proto udp --dst-port 500 --ingress --remote-ip 0.0.0.0/0 $SECGRP_ID
openstack security group rule create --proto udp --dst-port 4500 --ingress --remote-ip 0.0.0.0/0 $SECGRP_ID

sudo sysctl -w net.ipv4.ip_forward=1
sudo journalctl -u strongswan-starter -n 50

网站公告

今日签到

点亮在社区的每一天
去签到