Назад | Перейти на главную страницу

Разрешить Strongswan Roadwarrior доступ к локальной сети

Я успешно установил туннель IPSec между моим локальным хостом Linux и удаленным шлюзом VPN. Я использую виртуальные IP-адреса, назначаемые шлюзом, потому что моя локальная подсеть LAN не является фиксированной, поскольку я работаю на дороге.

Когда он включен, весь трафик проходит через туннель, включая интернет-трафик. Я бы хотел, чтобы весь трафик Кроме для локальной подсети для маршрутизации через туннель. Я прочитал и перечитал документацию 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)

РЕДАКТИРОВАТЬ:

Мне удалось исключить локальную сеть, добавив это, но подсеть жестко запрограммирована:

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

Таким образом, когда клиент отправляет пакет в локальную LAN, этот пакет маршрутизируется по таблице 220, у которой нет маршрута к локальной LAN - только маршрут по умолчанию к серверу 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 не будет добавлять другой маршрут по умолчанию, если он уже существует.