Настройте Linux для маршрутизации трафика из внутренней сети через туннель ipsec (на основе политики)

Моя компания предоставляет облачные сервисы. У нас есть партнер, который также предоставляет облачные сервисы. Мы хотим соединить нашу сеть с их сетью с помощью ipsec / strongswan. Наши клиенты должны иметь возможность подключаться к целевым серверам, используя vpn-router-server в качестве маршрутизатора / шлюза vopn.

Настройка выглядит следующим образом:

network setup as described in the text

Как мне нужно настроить моих клиентов и vpn-router-server ?

1
задан 7 November 2020 в 09:15
1 ответ

Примечания:

  • На самом деле мы не знаем и не заботимся о том, как в деталях выглядит внутренняя настройка партнерской сети. Мы просто знаем их общедоступный IP-адрес vpn-endpoint (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-адреса для пакетов SNAT

client1 теперь должен иметь возможность пинговать целевой сервер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
2
ответ дан 7 November 2020 в 06:15

Теги

Похожие вопросы