Я успешно установил туннель IPSec между своим локальным хостом Linux и удаленным шлюзом VPN. Я использую виртуального дюйм/с, присваиваются шлюзом, потому что, будучи roadwarrior моя локальная подсеть ЛВС не фиксируется.
То, когда это - весь трафик, идет через туннель включая интернет-трафик. То, что я хотел бы, является всем трафиком за исключением локальной подсети для маршрутизации через туннель. Я прочитал и перечитал документацию Strongswan, но я не могу разработать, как сделать это.
Что я должен сделать?
Локальный ipsec.conf
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
authby=secret
conn VPN
left=%any
leftsourceip=%config
leftid=@robin.my.net
leftfirewall=yes
right=52.n.n.n
rightsubnet=0.0.0.0/0
rightid=@vpn.my.net
auto=add
Сервер ipsec.conf
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
conn AWSVPN
left=%any
leftsubnet=172.31.38.36/32
leftid=@vpn.my.net
leftfirewall=yes
authby=secret
right=%any
rightsourceip=10.3.0.0/28
auto=add
Шлюз
IP: 172.31.38.36 Подсеть: 172.31.32.0/20
Моя машина
IP: 192.168.1.150 (может измениться), Подсеть: 192.168.1.0/24 (может измениться), Виртуальный IP: 10.3.0.1 (присвоенный шлюзом Strongswan)
Править:
Мне удалось исключить локальную сеть путем добавления этого, но подсеть является hardcoded:
conn local-net
leftsubnet=192.168.1.0/24
rightsubnet=192.168.1.0/24
authby=never
type=pass
auto=route
Я не могу добавить комментарий из-за низкой репутации, так что вот он ..
Когда он открыт, весь трафик проходит через туннель, включая интернет-трафик.
Этого не может быть. Укажите на сервере leftsubnet = 172.31.38.36 / 32, поэтому клиентский 'rightsubnet = 0.0.0.0 / 0' будет сужен до одного этого хоста.
Чтобы направить весь трафик в VPN, вам нужно 'leftsubnet = 0.0.0.0 / 0' на сервер тоже.
В конфигурации по умолчанию Strongswan добавляет маршрут к подсети сервера в таблице 220, что в случае подсети сервера '0.0.0.0/0' выглядит так:
$ ip route list table 220
default via 192.168.2.9 dev wlan0 proto static src 10.3.0.2
И эта таблица имеет приоритет над «основной» таблицей маршрутизации, используемой по умолчанию:
$ ip rule list
0: from all lookup local
220: from all lookup 220
32766: from all lookup main
32767: from all lookup default
Итак, когда клиент отправляет пакет в локальную локальную сеть, это пакет маршрутизируется по таблице 220, у которого нет маршрута к локальной сети - только маршрут по умолчанию к серверу VPN. Таким образом, чтобы не маршрутизировать пакеты локальной LAN в VPN, вам просто нужно добавить маршрут к локальная LAN в таблице 220, например:
$ ip route add table 220 192.168.1.0/24 dev wlan0
Итак, таблица 220 теперь будет выглядеть так:
default via 192.168.2.9 dev wlan0 proto static src 10.3.0.2
192.168.2.0/24 dev wlan0 scope link
Другое возможное решение - использовать «основную» таблицу маршрутизации для маршрутизации VPN подсеть ('routing_table = 32766' в strongswan.conf), потому что у нее уже будет маршрут к локальной сети. Но в этом случае текущий маршрут по умолчанию будет проблемой: strongswan не будет добавлять другой маршрут по умолчанию, если он уже есть ..