Маршрутизация всего трафика через StrongSwan VPN
Я новичок в этом - прошу прощения за мое невежество. Я просмотрел много других подобных вопросов, но безрезультатно.
Попытка настроить 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
на третьем, test, server (T) и отправляя эхо-запрос от C, я вижу запросы с реальным IP-адресом C. То же самое верно, если я сделаю wget
от С до Т.
Мой конфиг следующий:
# /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
Реальный 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 теперь может видеть другие машины в локальной сети и НЕКОТОРЫЕ (но не все, что я не понимаю) в Интернете.