
Я создаю сеть IPsec/L2TP и хочу иметь один сервер и несколько клиентов.
На каждом клиенте единственным способом заставить IPsec работать правильно было установить IP интерфейса, который будет размещать трафик, как leftsourceip. Кажется, это нормально, когда этот интерфейс публичный, но это кажется немного неправильным, когда машина находится за NAT, а интерфейс имеет частный IP.
Вот пример настройки ipsec со стороны клиента:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=route
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
esp=aes256-sha256-modp4096!
ike=aes256-sha256-modp4096!
rekey=no
right=ipsec.server.url
rightid=%any
rightauth=pubkey
rightprotoport=17/1701
left=10.0.0.60
leftsubnet=10.0.0.60/32
leftid=%any
leftauth=pubkey
leftcert=my-cert.crt
leftsendcert=always
leftprotoport=17/1701
leftsourceip=10.0.0.60
IP этого клиента — 10.0.0.60, поэтому ipsec создает туннель между сервером/32 и этим IP/32, и он работает хорошо.
Но поскольку это частный IP, у меня может быть два клиента с одинаковым IP, так что это больше не будет работать. И не думайте, что попытка поставить публичный IP этого клиента — хорошая идея, потому что у меня может быть несколько клиентов с одинаковым IP.
Я вижу как минимум два решения. Если я вручную дам виртуальный IP моему исходящему интерфейсу на моем клиенте, я могу легко избежать назначения одного и того же IP нескольким клиентам, но это требует ручного действия, и некоторые клиенты не позволят мне дать новый адрес (встроенное оборудование).
Другим решением было бы настроить ipsec для распределения виртуальных IP-адресов, но в этом случае мне кажется, что я настраиваю VPN L2 внутри VPN L3, и у меня будут две IP-сети друг над другом.
Я запутался, может я что-то упустил? Как правильно настроить IPsec с L2TP?
Спасибо