
Мой физический компьютер может установить туннель IPsec (с помощью Strongswan) к моему VPS, имеющему доступ к Интернету, так что интернет-трафик моего физического компьютера проходит через мой VPS.
Я также попытался и успешно установил Strongswan на виртуальной машине, запущенной на моей физической машине. Как и ожидалось, моя виртуальная машина может получить доступ к интернету через мой VPS.
Я хотел бы запустить Strongswan на моем физическом компьютере, чтобы трафик всех моих виртуальных машин (в 192.168.122.0/24) проходил через мой VPS. Я думаю, это можно сделать с помощью конфигурации site-to-site (пример здесь:https://www.strongswan.org/testing/testresults/ikev2/net2net-cert/), однако мне не удалось заставить его работать. Я не уверен, связана ли моя проблема с конфигурацией Strongswan или с конфигурацией моей сети виртуальной машины, или с обоими...
ipsec.conf на моей физической машине:
config setup
charondebug="ike 2, cfg 2"
conn kvm-test
rightsubnet=0.0.0.0/0
keyexchange=ikev2
ike=aes256gcm128-sha512-modp8192!
esp=aes256gcm128-sha512-modp8192!
leftcert=client.pem
auto=add
right=123.123.123.123 # not my VPS's actual IP
rightcert=vpn_server.pem
leftsubnet=192.168.122.0/24
left=192.168.1.2
ipsec.conf на моем VPS:
config setup
# strictcrlpolicy=yes
# uniqueids = no
conn %default
keyexchange=ikev2
leftfirewall=yes
auto=add
leftsubnet=0.0.0.0/0
left=123.123.123.123 # not my VPS's actual IP
ike=aes256gcm128-sha512-modp8192!
esp=aes256gcm128-sha512-modp8192!
conn kvm-test
leftcert=vpn_server.pem
rightcert=client.pem
rightsubnet=192.168.122.0/24
При такой конфигурации соединение успешно устанавливается, однако трафик моей виртуальной машины через него не проходит. Должен отметить, что ip route show table 220
ничего не показывает, что не похоже на пример, на который ссылаются выше, и я не уверен, что мне туда вписать... ip route add table 220 default via 123.123.123.123 proto static
не работает. Есть мысли?
решение1
Если ваше решение виртуализации преобразует трафик с 192.168.122.0/24 в физический IP вашего хоста (192.168.1.2), вам нужно этого избежать и добавить правило, которое принимает трафик, соответствующий политике IPsec. Например (больше деталей):
iptables -t nat -I POSTROUTING -s 192.168.122.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT