场景:

公司A(Server)—IPSec—公司B(Server)–公司B其他公网主机

公司A IPSec VPN Server 公网IP:103.1.1.1  内网段10.255.203.0/24

公司B IPSec VPN Server 公网IP:116.1.1.1  内网段10.0.0.0/24

实现效果:公司A Server 可以与公司B公网主机互相访问

公有云VPN连接不支持本地标识、对方标识修改,默认是IPv4地址,所以没法使用,只能在物理机上安装Strongswan来实现对接,site-to-site vpn连接后,本机ip a是看不到虚拟网卡的,也不需要分配内网互联IP,连接成功后路由表里也是看不到的,需要通过ipsec命令查看

#  yum install strongswan

# more /etc/strongswan/ipsec.conf  | grep -v "#\|^$"
config setup
        strictcrlpolicy=no
        charondebug = "all"
        uniqueids = yes
        nat_traversal=yes
conn hb-drms-ipsec
      auto=route
      authby=secret
      left=103.1.1.1
      leftid="beijing@test"
      right=116.1.1.1
      rightid="duck@test"
      leftsubnet=10.205.203.0/24
      rightsubnet=10.0.0.0/24
      type=tunnel
      leftauth=psk
      rightauth=psk
      keyexchange=ikev1
      ikelifetime=24h
      ike=aes128-sha1-modp1024
      esp=aes128-sha1-modp1024
      lifetime=1h
      keyingtries=%forever
      dpddelay=30s
      dpdtimeout=300s
      dpdaction=restart

# more /etc/strongswan/ipsec.secrets 
# ipsec.secrets - strongSwan IPsec secrets file
103.1.1.1 116.1.1.1 : PSK "xxxx"
beijing@test duck@test : PSK "xxxx"

# more /export/sh/ipip-tunnel/set-up-drms.sh 
#!/usr/bin/env bash
ip tunnel add hb-drms1 mode ipip remote 198.1.1.2 local 116.1.1.1 ttl 255
ip addr add 10.0.0.254/32 peer 10.0.0.253/32 dev hb-drms1
ip link set hb-drms1 up
ip route add 10.0.0.11 via 10.0.0.253 dev hb-drms1

ip tunnel add hb-drms2 mode ipip remote 198.1.1.3 local 116.1.1.1 ttl 255
ip addr add 10.0.0.252/32 peer 10.0.0.251/32 dev hb-drms2
ip link set hb-drms2 up
ip route add 10.0.0.14 via 10.0.0.251 dev hb-drms2 

iptables放行
iptables -A INPUT  -p udp -s 103.1.1.1/32 -j ACCEPT
iptables -A OUTPUT -p udp -d 103.1.1.1/32 -j ACCEPT
iptables -A INPUT -p 50 -s 103.1.1.1/32 -j ACCEPT
iptables -A INPUT -p 51 -s 103.1.1.1/32 -j ACCEPT
iptables -A OUTPUT -p 50 -d 103.1.1.1/32 -j ACCEPT
iptables -A OUTPUT -p 51 -d 103.1.1.1/32 -j ACCEPT

# ipip allow
iptables -A INPUT -i eth0 -p 4 -s 198.1.1.1/32 -d 116.1.1.1/32 -j ACCEPT
iptables -A OUTPUT -o eth0 -p 4 -s 116.1.1.1/32 -d 198.1.1.1/32 -j ACCEPT
...

iptables -A INPUT -i hb-drms+ -j ACCEPT
iptables -A OUTPUT -o hb-drms+ -j ACCEPT
iptables -A FORWARD -i hb-drms+ -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o hb-drms+ -j ACCEPT



云主机上配置
ip tunnel add bj-test mode ipip remote 116.1.1.1 local 10.0.0.11 ttl 255
ip addr add 10.0.0.253 peer 10.0.0.254 dev bj-test
ip link set bj-test up
ip route add 10.255.203.0/24 via 100.0.0.254 dev bj-test


ip tunnel add bj-test mode ipip remote 116.1.1.1 local 10.0.0.14 ttl 255
ip addr add 10.0.0.251 peer 10.0.0.252 dev bj-test
ip link set bj-test up
ip route add 10.255.203.0/24 via 10.0.0.252 dev bj-test

ipsec vpn连接成功后,要看到Routed Connections才行

查看ipsec转发流量

watch swanctl –list-sas

公司B IPSec Server上测试,可以访问公司A的Server

# ping 10.255.203.254 -I 10.0.0.252
PING 10.255.203.254 (10.255.203.254) from 10.0.0.252 : 56(84) bytes of data.
64 bytes from 10.255.203.254: icmp_seq=1 ttl=63 time=13.3 ms
64 bytes from 10.255.203.254: icmp_seq=2 ttl=63 time=4.22 ms
64 bytes from 10.255.203.254: icmp_seq=3 ttl=63 time=4.12 ms
64 bytes from 10.255.203.254: icmp_seq=4 ttl=63 time=8.59 ms