环境

Ubuntu 22.04
Debian 11
strongSwan 5.9.14

Ubuntu 22.04 本地

本地公网IP:使用域名"本地.yudelei.com"
Ubuntu 私网IP、内网IP:192.168.2.54,192.168.2.0/24
Ubuntu 环回IP、IPSec Tunnel 隧道端口IP:192.168.81.1/32
Ubuntu GRE Tunnel 隧道端口IP:192.168.83.1/32

Debian 11 云

云上公网IP:使用域名"阿里云.yudelei.com"
Debian 私网IP、内网IP:172.30.88.176,172.30.80.0/20(虚拟交换机网段)
Debian 环回IP、IPSec Tunnel 隧道端口IP:192.168.82.1/32
Debian GRE Tunnel 隧道端口IP:192.168.83.2/32

描述

两台虚拟机构建 IPSec。
使用环回IP构建 IPSec Tunnel 隧道。
IPSec 使用 strongSwan,部分参数可:IKEv2 PSK 预共享密钥 Site-to-Site 站点到站点
两台虚拟机构建 GRE over IPSec。
GRE 隧道启用多播支持。
GRE 两端设置 pointoponit 点对点模式。
云上服务器将拿到本地主机的内网IP。

步骤

两台机器自带防火墙全关闭或未安装,忽略防火墙左右操作。
若有,注意开放端口,安全组,转发等。

本地路由器开放端口映射:
udp:500,4500

相同操作

apt update -y
apt -y install libgmp3-dev bzip2 make gcc pkg-config libsystemd-dev
wget https://download.strongswan.org/strongswan-5.9.14.tar.bz2
tar xjf strongswan-5.9.14.tar.bz2 && cd strongswan-5.9.14/
./configure --prefix=/usr --sysconfdir=/etc --enable-systemd
make && make install

echo ": PSK \"预共享密钥"" >> /etc/IPSec.secrets
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

strongSwan IPSec 配置

使用环回IP进行创建 IPSec 隧道。
若要只允许 gre 协议通过,需更改leftsubnetrightsubnet,在后追加[gre]
nano /etc/ipsec.conf

Ubuntu ipsec.conf

config setup
    charondebug="all"
    uniqueids=yes
    
conn vpn01
    ikelifetime=180m
    authby=psk
    auto=start
    compress=no
    type=tunnel
    keyexchange=ikev2
    left=192.168.2.54 # 注意修改
    leftsubnet=192.168.81.1/32 # 注意修改 环回网段
    leftid=本地.yudelei.com # 注意修改
    leftauth=psk
    leftsendcert=no
    right=阿里云.yudelei.com # 注意修改
    rightsubnet=192.168.82.1/32 # 注意修改
    rightauth=psk
    rightid=阿里云.yudelei.com # 注意修改
    fragmentation=yes
    rightsendcert=no
    forceencaps=yes
    ike=aes256-sha256-modp1536!
    esp=aes256-sha256!
    dpdaction=hold
    closeaction=restart
    keyingtries=%forever

Debian ipsec.conf

config setup
    charondebug="all"
    uniqueids=yes

conn vpn01
    ikelifetime=180m
    authby=psk
    auto=start
    compress=no
    type=tunnel
    keyexchange=ikev2
    left=172.30.88.176 # 注意修改
    leftsubnet=192.168.82.1/32 # 注意修改
    leftid=阿里云.yudelei.com
    leftauth=psk
    leftsendcert=no
    right=本地.yudelei.com # 注意修改
    rightsubnet=192.168.81.1/32 # 注意修改
    rightauth=psk
    rightid=本地.yudelei.com # 注意修改
    fragmentation=yes
    rightsendcert=no
    forceencaps=yes
    ike=aes256-sha256-modp1536!
    esp=aes256-sha256!
    dpdaction=hold
    closeaction=restart
    keyingtries=%forever

运行 strongSwan IPSec

systemctl enable strongswan-starter.service
systemctl start strongswan-starter.service

GRE 配置

创建 GRE 隧道,与 IPSec 隧道 IP 两端一致。
创建 GRE 隧道IP,设置对端IP(pointopoint),使用 gre1 设备。
设置允许多播,并启动隧道。

Ubuntu

ip tunnel add gre1 mode gre local 192.168.81.1 remote 192.168.82.1
ip addr add local 192.168.83.1 remote 192.168.83.2 brd 255.255.255.255 dev gre1
ip link set gre1 multicast on
ip link set gre1 up

Debian

ip tunnel add gre1 mode gre local 192.168.82.1 remote 192.168.81.1
ip addr add local 192.168.83.2 remote 192.168.83.1 brd 255.255.255.255 dev gre1
ip link set gre1 multicast on
ip link set gre1 up

配置路由

Ubuntu

Ubuntu 位于路由器之后,其他主机默认路由为路由器,需配置路由器静态路由。
目的地址:172.30.80.0
子网掩码:255.255.240.0
网关:192.168.2.54
若云端服务器需获取本地访问主机的内网IP,需设置 NAT规则,NAT过滤:对去往172.30.80.0/20段的IP 不做 NAT。

ip route add 172.30.80.0/20 dev gre1

Debian

ip route add 192.168.2.0/24 dev gre1

strongSwan-IPSec02

提示

至此 GRE over IPSec 已完成。

注意

配置开机脚本使 GRE 隧道开机启动。
配置定时 Ping 脚本保活 GRE Keepalive。

最后修改:2024 年 10 月 17 日 05 : 33 PM
如果觉得文章帮助了您,您可以随意赞赏。