ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Выборочная маршрутизация сети или разделенное туннелирование через VPN

Как использование VPN может принести пользу SEO

Все работают из дома, а для многих это удаленная работа на серверах. Мы можем подключиться к ним только через VPN, но это замедляет мой просмотр и видеоконференции.

Мы пытались найти способ использовать VPN специально для сервера и позволить другому трафику двигаться нормально. Вот тогда-то мы и наткнулись на это решение. В этом блоге мы объясним решение шаг за шагом.

ps.: В конце этого блога вы сможете выбрать, какой веб-сайт или IP-адреса вы хотите маршрутизировать через VPN.

Требования:

 

Шаги для выборочной маршрутизации

1. конфигурационный файл VPN

Этот файл сообщает нашему VPN-клиенту конфигурацию нашего VPN.

Сохраните приведенный ниже конфигурационный файл как vpn-config. conf в любом месте вашего компьютера

host = vpn.iiitd.edu.in
port = 10443
username = <your username>
password = <your pass>
set-routes = 0
set-dns = 0
pppd-use-peerdns = 0

 

set-routes = 0 указывает, чтобы не делать никаких маршрутов через VPN, теперь мы будем белый список веб-сайтов, чтобы использовать через VPN.

 

2. Настройка скрипта PPP

Что такое ППС?: PPP-это протокол точка-точка. Linux использует этот протокол для связи по протоколу TCP/IP с вашим интернет-провайдером.

Сейчас мы напишем скрипт, который внесет в белый список определенные домены для прохождения через VPN.

Для создания сценария используйте следующие команды

sudo touch /etc/ppp/ip-up.d/fortivpn
sudo chmod a+x /etc/ppp/ip-up.d/fortivpn

 

Что такое pppd? Демон PPP (pppd) — это свободно доступная реализация протокола Point-to-Point Protocol (PPP), который работает во многих системах Unix. читайте дальше

Что такое ip-up? /etc/ppp/ip-up-это shell — скрипт, выполняемый pppd при появлении ссылки/интернета. Читать далее

Отредактируйте приведенный выше скрипт с помощью вашего любимого редактора, он будет выглядеть следующим образом:

#!/bin/bash
#
# Whitelist here all domains that need to go through openfortivpn
# Domains and IPs are separated by a space
#
ips='192.168.2.217 192.168.29.151'
domains='example.com example.fr'

let resolved
for domain in $domains; do
  resolved=`dig +short $domain | tail -n1`
  ips="$ips $resolved"
done

for ip in $ips; do
  route add $ip dev ppp0
done

 

Теперь добавьте IP-адреса и домены, к которым вы хотите получить доступ через VPN.

 

3. запустите VPN

Следующая команда должна подключить вас к вашему VPN прямо сейчас.

sudo openfortivpn -c vpn-config.conf

 

Ниже вы можете увидеть маршруты, добавленные для ip-адресов. ppp0-это vpn-интерфейс, а enp2s0-ethernet.

andreyex@andreyex ~> route                                                                  (base)
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 enp2s0
one.one.one.one 0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
103.25.231.4    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp2s0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp2s0
192.168.2.217   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.29.151  0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

 

Вот и все! Теперь вы можете работать на своем сервере и наслаждаться быстрым интернетом вместе с ним 🙂

 

Бонус: автоматический запуск VPN при загрузке

Это довольно раздражает, чтобы войти в VPN каждый раз, прежде чем начать работу. Поэтому мы создали системный сервис для автоматического подключения к VPN при загрузке. Отказ от ответственности: это не будет работать с WSL2

Выполните эти команды для настройки службы

sudo touch /etc/systemd/system/openfortivpn.service

 

Откройте его с помощью вашего любимого редактора и введите эту конфигурацию.

[Unit]
Description = OpenFortiVPN
After=network-online.target
Documentation=man:openfortivpn(1)

[Service]
Type=idle
ExecStart = /usr/bin/openfortivpn -c <path to your config file>
StandardOutput=file:<any-place-where you want to save your logs>
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

 

Чтобы запустить эту службу, просто запустите ее

sudo systemctl enable openfortivpn
sudo systemctl start openfortivpn

 

Чтобы проверить, работает ли он

andreyex@andreyex ~> sudo systemctl status openfortivpn
● openfortivpn.service - OpenFortiVPN
   Loaded: loaded (/etc/systemd/system/openfortivpn.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-04-25 13:22:26 IST; 3h 43min ago
     Docs: man:openfortivpn(1)
 Main PID: 1851 (openfortivpn)
    Tasks: 6 (limit: 4915)
   CGroup: /system.slice/openfortivpn.service
           ├─1851 /usr/bin/openfortivpn -c /home/andreyex/Documents/vpn-configs/iiitd.conf
           └─1852 /usr/sbin/pppd 38400 :1.1.1.1 noipdefault noaccomp noauth default-asyncmap nopcomp

Apr 25 13:22:26 andreyex systemd[1]: Started OpenFortiVPN.
Apr 25 13:22:26 andreyex pppd[1852]: pppd 2.4.7 started by root, uid 0
Apr 25 13:22:26 andreyex pppd[1852]: Using interface ppp0
Apr 25 13:22:26 andreyex pppd[1852]: Connect: ppp0 <--> /dev/pts/0
Apr 25 13:22:27 andreyex pppd[1852]: local  IP address 10.212.134.101
Apr 25 13:22:27 andreyex pppd[1852]: remote IP address 1.1.1.1

 

Спасибо за чтение 🙂 Если это действительно помогло вам, не стесняйтесь ставить лайки, комментировать и делиться этим блогом.

Exit mobile version