Моя компания предоставляет облачные сервисы. У нас есть партнер, который также предоставляет облачные сервисы. Мы хотим соединить нашу сеть с их сетью с помощью ipsec / strongswan. Наши клиенты должны иметь возможность подключаться к целевым серверам, используя vpn-router-server
в качестве маршрутизатора / шлюза vopn.
Настройка выглядит следующим образом:
Как мне нужно настроить моих клиентов и vpn-router-server
?
Примечания:
1.1.1.1
), их внутреннюю сеть (10.10.10.0/24
) и IP-адрес их серверов (например, 10.10.10.1
)vpn-router-server
— это сервер IAAS, размещенный у поставщика общедоступного облака. Он имеет напрямую доступный внешний IP-адрес (2.2.2.2
). Он использует шлюз для выхода в Интернет, однако, поскольку всем этим занимается поставщик IAAS, мы не включаем его в нашу диаграмму. В этом примере мы сосредоточимся на следующем сценарии:
client1
отправит ping
на целевой сервер1
. Другие клиенты и целевые серверы работают точно так же, только их IP-адреса разные. На client1
:
# tell the client to send all traffic for the partner network to the vpn-router-server
$ route add -net 10.10.10.0 gw 192.168.1.1
На vpn-router-server
: /etc/ipsec.conf
-configuration
config setup
uniqueids = yes
conn con1
aggressive = no
fragmentation = yes
keyexchange = ikev2
mobike = yes
reauth = yes
rekey = yes
forceencaps = no
installpolicy = yes
left = %any
leftid = 2.2.2.2
leftsubnet = 192.168.1.0/24
leftauth = psk
right = 1.1.1.1
rightid = 1.1.1.1
rightsubnet = 10.10.10.0/24
rightauth = psk
ikelifetime = 86400s
lifetime = 3600s
ike = aes256gcm16-sha512-ecp521!
reqid = 1000
esp = aes256-sha512-ecp521,aes256gcm16-sha512-ecp521,3des-sha512-ecp521,cast128-sha512-ecp521!
auto = start
Set iptable
-rules:
$ iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 ! -p esp -j SNAT --to-source 192.168.1.1
-s 192.168.1.0/24
применять SNAT только к трафику из нашей внутренней сети-o eth0
применять SNAT только к трафику, идущему через внешний интерфейс eth0! -p esp
Не использовать SNAT для самого трафика DSP/ipsec. Это важная часть, и я пропускал эту часть раньше. -j SNAT
SNAT трафика--к-источнику 192.168.1.1
Используйте внутренний IP-адрес vpn-router-server
в качестве исходного IP-адреса для пакетов SNATclient1
теперь должен иметь возможность пинговать целевой сервер1
:
$ ping 10.10.10.1
Вы можете проанализировать, что происходит на vpn-router-server
, используя tcpdump
:
$ tcpdump -n -i eth0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
07:10:37.150680 IP 10.10.10.1 > 192.168.1.1: ICMP echo reply, id 7642, seq 1, length 64
07:10:38.152097 IP 10.10.10.1 > 192.168.1.1: ICMP echo reply, id 7642, seq 2, length 64
07:10:39.153237 IP 10.10.10.1 > 192.168.1.1: ICMP echo reply, id 7642, seq 3, length 64
07:10:40.153997 IP 10.10.10.1 > 192.168.1.1: ICMP echo reply, id 7642, seq 4, length 64
07:10:41.154766 IP 10.10.10.1 > 192.168.1.1: ICMP echo reply, id 7642, seq 5, length 64
07:10:42.155937 IP 10.10.10.1 > 192.168.1.1: ICMP echo reply, id 7642, seq 6, length 64
$ tcpdump -n -i eth1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
07:10:46.156162 IP 192.168.1.101 > 10.10.10.1: ICMP echo request, id 7642, seq 10, length 64
07:10:46.161079 IP 10.10.10.1 > 192.168.1.101: ICMP echo reply, id 7642, seq 10, length 64
07:10:47.157485 IP 192.168.1.101 > 10.10.10.1: ICMP echo request, id 7642, seq 11, length 64
07:10:47.162435 IP 10.10.10.1 > 192.168.1.101: ICMP echo reply, id 7642, seq 11, length 64
07:10:48.158920 IP 192.168.1.101 > 10.10.10.1: ICMP echo request, id 7642, seq 12, length 64
07:10:48.163772 IP 10.10.10.1 > 192.168.1.101: ICMP echo reply, id 7642, seq 12, length 64
07:10:49.160364 IP 192.168.1.101 > 10.10.10.1: ICMP echo request, id 7642, seq 13, length 64
07:10:49.165322 IP 10.10.10.1 > 192.168.1.101: ICMP echo reply, id 7642, seq 13, length 64