
Я новичок в этом деле - извините за невежество. Я просмотрел много других подобных вопросов, но безрезультатно.
Пытаюсь настроить StrongSwan VPN таким образом, чтобы клиент C мог подключиться к хосту H, получить виртуальный IP-адрес и получить доступ к сети H. (Из-за практических ограничений, пока я настраиваю и тестирую, C и H в настоящее время находятся в одной сети — по сути, это виртуальные машины на одном физическом ПК с сетью в режиме моста, поэтому они получают свои собственные IP-адреса.)
Использую StrongSwan 5.3.0, Ubuntu 14.04 (на C и H).
Я запускаю ipsec up home
C, и соединение, похоже, установлено. H может пинговать виртуальный IP-адрес, назначенный C (192.168.0.1), а C может видеть пинги, идущие на его виртуальный IP-адрес (подтверждено с помощью tcpdump).
Однако, насколько я могу судить, весь трафик на C по-прежнему идет напрямую через сетевое соединение C, а не через туннель — если я запущу tcpdump ip proto \\icmp
третий, тестовый, сервер (T) и пропингую его с C, я увижу запросы с реальным IP-адресом C. То же самое верно, если я сделаю 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
[email protected]
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
[email protected]
leftfirewall=yes
right=192.168.196.50
[email protected]
auto=add
Настоящий IP-адрес H — 192.168.196.50. Настоящий IP-адрес C — 192.168.198.74.
решение1
Мне нужно было бежать
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 может видеть другие машины в локальной сети и НЕКОТОРЫЕ (но не все, чего я не понимаю) в Интернете.