Как исправить очень медленный роутинг локального трафика при подключённом VPN?



@cherkunoff

Добрый день!

Столкнулся с одной проблемой, которую не могу решить и прошу совета.
Имеется Raspberry Pi 4, выступающий в качестве VPN gateway. При этом стоит задача весь трафик клиентов LAN (10.10.10.0/24), которые используют Малинку, пропускать через VPN, а собственный трафик Малинки через провайдера.

Что бы решить задачу маршрутизации собственного трафика, после подключения VPN добавляется таблица маршрутизации и одно правило:

ip route add table 100 10.10.10.0/24 dev eth0 src 10.10.10.100
ip route add table 100 default via 10.10.10.1
ip rule add iif lo lookup 100 prio 201

После этого трафик самой Малинки начинает ходить через провайдера, а не через VPN (точнее он начинает ходить через шлюз 10.10.10.1).
Однако возникает проблема — трафик ходит ну очень медленно. И что с этим делать я пока понять не могу — прошу помощи.

Вот результаты speedtest, если VPN не подключен (весь трафик идёт через провайдера):

Hosted by XXX [0.39 km]: 3.467 ms
Testing download speed................................................................................
Download: 594.71 Mbit/s
Testing upload speed......................................................................................................
Upload: 172.22 Mbit/s

Вот результаты теста, когда VPN подключен, но локальный трафик идёт через провайдера (используется тот же сервер для тестирования):

Hosted by XXX [0.39 km]: 239.691 ms
Testing download speed................................................................................
Download: 44.03 Mbit/s
Testing upload speed......................................................................................................
Upload: 11.64 Mbit/s

Разница очень существенна.
А вот результат теста VPN соединения от одного из клиентов LAN, когда VPN подключен и его (клиента) трафик идёт через VPN (используется другой сервер):

Hosted by YYY [9.68 km]: 37.024 ms
Testing download speed................................................................................
Download: 139.88 Mbit/s
Testing upload speed......................................................................................................
Upload: 144.09 Mbit/s

Все тесты выполнялись «без нагрузки», т.е. когда выполнялся тест, никакие другие клиенты или процессы на Малинке ничего не качали/загружали.

Доп. информация.
Вот такие правила маршрутизации после подключения VPN:

# ip rule
0:      from all lookup local
201:    from all iif lo lookup 100
32763:  from all lookup main suppress_prefixlength 0
32764:  not from all fwmark 0xca6c lookup 51820
32765:  from all to <IP ноды VPN> lookup main
32766:  from all lookup main
32767:  from all lookup default

201 — это я дописываю, что бы перенаправлять локальный трафик. 32763 — 32765 дописывает клиент VPN в момент подключения.

Вот правила firewall (nordlynx — это имя интерфейса VPN):

# iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.10.10.0/24 -i eth0 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 8555 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 8444 -j ACCEPT
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -i eth0 -o nordlynx -j ACCEPT
-A FORWARD -i nordlynx -o eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 9000 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

Буду рад советам, как ускорить маршрутизацию локального трафика!


Решения вопроса 0


Ответы на вопрос 3



@alexvdem

Имеется Raspberry Pi 4, выступающий в качестве VPN gateway.

Дальше можно не продолжать… Плохая идея. Работать будет, но ты сам увидал, насколько маломощное железо справляется данной задачей. И тут вопрос не в маршрутизации. Бери Микротик для данной задачи, он аппаратно поддерживает шифрование, а малина все делает программным путем, отсюда и тормоза. Я уж не говорю про надежность подобного решения.
Кстати, скорость зависит также от VPN сервера, ты же не забыл, что это туннель, и на той стороне тоже стоит проц, который все это расшифровать должен?



@Jump

Выключите шифрование на VPN.



@mikes

Попробуй таки сделать наоборот. Трафик от клиентов через ip rule запихнуть во вторую таблицу маршрутизации, а саму малинку по дефолту.

Но люди говорят дело. Бери микротик и радуйся жизни.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *