Я работаю над site-to-site vpn, где один конец — UDM, а другой — Strongswan. Цель — обеспечить двунаправленную маршрутизацию в облачную среду. Я полностью сбит с толку, почему это не работает.
Хорошие новости: Strongswan подключается и пропускает трафик. Но у меня есть некоторые проблемы с маршрутизацией на стороне Strongswan. У моего хоста Strongswan есть два интерфейса, eth0, который имеет публичный IP-адрес интернета на eth0, и внутренний IP-адрес 10.132.169.74 на eth1
- Сеть[и] локальной сети: 10.87.0.0/24, 10.87.35.0/24, 10.87.235.0/24
- Облачная сеть: 10.132.0.0/16
- 10.87.0.1 = УДМ
- 10.132.169.74 = Strongswan eth1 и подключается к внутренней облачной сети 10.132.0.0/16
- 10.87.0.33 = тестовый хост в локальной сети
- 10.132.40.82 = тестовый хост в облачной сети
текущая ситуация:
- пинг с 10.87.0.33 (хост теста локальной сети) -> 10.132.169.74 (Strongswan) работает
- пинг с 10.132.169.74 (Strongswan) -> 10.87.0.33 (хост теста локальной сети) работает
- пинг с 10.132.40.82 (облачный тестовый хост) -> 10.87.0.33 (локальный тестовый хост) работает
- пинг с 10.87.0.33 (тестовый хост локальной сети) -> 10.132.40.82 (тестовый хост облака) Не работает, что самое главное из всего этого
Вот таблица маршрутизации хоста Strongswan 10.132.169.74:
default via x.x.x.x dev eth0 proto static
10.17.0.0/16 dev eth0 proto kernel scope link src 10.17.0.21
10.19.49.0/24 dev wg0 proto kernel scope link src 10.19.49.1
10.87.0.0/16 dev ipsec0 scope link src 10.132.169.74
10.132.0.0/16 dev eth1 proto kernel scope link src 10.132.169.74
x.x.x.y/20 dev eth0 proto kernel scope link src x.x.x.z
Вот таблица маршрутизации на тестовом хосте облака (10.132.40.82):
default via x.x.x.x dev eth0 proto static
10.17.0.0/16 dev eth0 proto kernel scope link src 10.17.0.24
10.87.0.0/16 via 10.132.169.74 dev eth1
10.132.0.0/16 dev eth1 proto kernel scope link src 10.132.40.82
x.x.x.y/20 dev eth0 proto kernel scope link src x.x.x.z
На хосте Strongswan я выполняю следующее:
sudo ip link add ipsec0 type xfrm dev eth0 if_id 4242
sudo ip link set ipsec0 up
sudo ip route add 10.87.0.0/16 dev ipsec0 src 10.132.169.74
И наконец, вот моя конфигурация лебеди:
sudo tee /etc/strongswan.d/charon-systemd.conf << "EOF"
charon-systemd {
load=pem pkcs1 x509 revocation constraints pubkey openssl random random nonce aes sha1 sha2 hmac pem pkcs1 x509 revocation curve25519 gmp curl kernel-netlink socket-default updown vici
journal {
default=0
# enc=1
# asn=1
}
}
EOF
sudo tee /etc/swanctl/conf.d/xyz.conf << "EOF"
connections {
vpn-cloud-udm-lan {
version=2
proposals=aes128gcm16-sha256-modp2048,aes128-sha256-modp2048
unique=replace
encap=yes
local {
id=x.x.x.x
auth=psk
}
remote {
auth=psk
}
children {
net {
local_ts=10.132.0.0/16
remote_ts=10.87.0.0/16
esp_proposals=aes128gcm16-sha256-modp2048,aes128-sha256-modp2048
start_action=trap
if_id_in=4242
if_id_out=4242
}
}
}
}
secrets {
ike-1 {
id-vpn-cloud=x.x.x.x
secret="somesecret"
}
ike-2 {
id-udm-lan=y.y.y.y
secret="somesecret"
}
}
EOF
и мой sysctl на хосте Strongswan:
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
sudo swanctl --list-sas
показывает активные туннели, и когда я пингую, я вижу, что счетчики растут. Более того, прослушивание tcpdump на тестовом хосте облака не показывает входящего трафика, но tcpdump на хосте Strongswan в конкретном сценарии показывает трафик, поэтому он должен быть сброшен там.
Любая помощь будет оценена по достоинству, спасибо!
решение1
Итак, после долгих раздумий (не тех, что бывают, когда слушаешь рок-музыку) и скрежета зубовного, я понял это из этого ответа:https://www.digitalocean.com/community/questions/site-to-site-vpn-support-any-updates
Digital Ocean сбрасывал пакеты на частных интерфейсах. Поэтому я добавил правило брандмауэра, разрешающее трафик с 10.87.0.0/24 и вау! ОНО WERX!!!