Я плохо знаком с этим - извините мое незнание. Я просмотрел много других подобных вопросов напрасно.
Попытка настроить StrongSwan VPN, таким образом, что клиент C может соединиться с хостом H, быть присвоенным виртуальный IP-адрес и доступ сеть H. (Из-за практических ограничений, в то время как я настроил и тестирую, C и H в настоящее время находятся в той же сети - на самом деле они - VMs на том же физическом ПК с сетью в Режиме моста, таким образом, они получают свои собственные IP-адреса.)
Использование StrongSwan 5.3.0, Ubuntu 14.04 (и на C и на H).
Я работаю ipsec up home
на C и соединении, кажется, устанавливается. H может проверить с помощью ping-запросов виртуальный IP-адрес, присвоенный C (192.168.0.1), и C видит, что ping идут в его виртуальный IP-адрес (подтвержденное использование tcpdump).
Однако насколько я могу разобрать, весь трафик в C все еще идет прямо посредством сетевого соединения C, не через туннель - если я работаю tcpdump ip proto \\icmp
на одной трети, тесте, сервер (T), и ping это от C, я вижу запросы с C реальный IP-адрес. То же верно, если я делаю a wget
от C до T.
Моя конфигурация следует:
#/etc/ipsec.conf на хосте (H)
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
conn rw
left=192.168.196.50
leftcert=moonCert.pem
leftid=@moon.strongswan.org
leftfirewall=yes
right=%any
rightsourceip=192.168.0.0/16
auto=add
-
#/etc/ipsec.conf - на клиенте (C)
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
conn home
left=192.168.198.74
leftsourceip=%config
leftcert=carolCert.pem
leftid=carol@strongswan.org
leftfirewall=yes
right=192.168.196.50
rightid=@moon.strongswan.org
auto=add
H реальный IP-адрес 192.168.196.50. C реальный IP-адрес 192.168.198.74.
Мне нужно было запустить
sudo sysctl net.ipv6.conf.all.forwarding=1
sudo sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -j MASQUERADE
на хосте, чтобы заставить его маршрутизировать трафик.
Мой клиент C теперь может видеть другие машины в локальной сети, и SOME (но не все, чего я не понимаю) в интернете.