Сервер ретінде WireGuard және Raspberry Pi көмегімен қарапайым VPN орнату

Себебі WireGuard бөлігіне айналады Алдағы Linux ядросының 5.6 нұсқасына байланысты мен бұл VPN-ді өзімнің құрылғыммен қалай жақсы біріктіруге болатынын көруді шештім. Raspberry Pi жүйесіндегі LTE маршрутизаторы/кіру нүктесі.

Жабдық

  • LTE модулі және жалпы IP мекенжайы бар Raspberry Pi 3. Мұнда VPN сервері болады (бұдан әрі мәтінде ол деп аталады). шеткері)
  • Барлық байланыстар үшін VPN пайдалану керек Android телефоны
  • Linux ноутбугі желі ішінде тек VPN пайдалануы керек

VPN желісіне қосылатын әрбір құрылғы барлық басқа құрылғыларға қосыла алуы керек. Мысалы, егер екі құрылғы да VPN желісінің бөлігі болса, телефон ноутбуктағы веб-серверге қосыла алуы керек. Орнату өте қарапайым болып шықса, жұмыс үстелін VPN желісіне қосу туралы ойлануға болады (Ethernet арқылы).

Сымды және сымсыз қосылымдардың уақыт өте келе қауіпсізі азайып бара жатқанын ескере отырып (мақсатты шабуылдар, KRACK WPA2 крекинг шабуылы и WPA3-ке қарсы айдаһар қанының шабуылы), Мен WireGuard қолданбасын барлық құрылғыларым үшін, олар қандай ортада болса да, пайдалануды шындап қарастырудамын.

Бағдарламалық жасақтаманы орнату

WireGuard қамтамасыз етеді алдын ала құрастырылған пакеттер Linux, Windows және macOS дистрибутивтерінің көпшілігі үшін. Android және iOS қолданбалары қолданбалар каталогтары арқылы жеткізіледі.

Менде соңғы Fedora Linux 31 нұсқасы бар және орнату алдында нұсқаулықты оқуға тым жалқау болдым. Пакеттерді таптым wireguard-tools, оларды орнатты, содан кейін неге ештеңе жұмыс істемейтінін түсіне алмады. Әрі қарай тексеру менде пакеттің орнатылмағанын анықтады wireguard-dkms (желі драйверімен), бірақ ол менің таратуымның репозиторийінде болмады.

Егер мен нұсқауларды оқыған болсам, дұрыс қадамдар жасаған болар едім:

$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools

Менің Raspberry Pi-де Raspbian Buster дистрибутиві орнатылған, ол жерде пакет бар wireguard, оны орнатыңыз:

$ sudo apt install wireguard

Android телефоныма қолданбаны орнаттым WireGuardVPN ресми Google App Store каталогынан.

Кілттерді орнату

Бірдей аутентификация үшін Wireguard VPN құрдастарының аутентификациясы үшін қарапайым жеке/ашық кілт схемасын пайдаланады. Келесі пәрменді пайдаланып VPN кілттерін оңай жасауға болады:

$ wg genkey | tee wg-laptop-private.key |  wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key |  wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key |  wg pubkey > wg-mobile-public.key

Бұл бізге үш кілт жұбын (алты файл) береді. Біз конфигурациялардағы файлдарға сілтеме жасамаймыз, бірақ мазмұнын осы жерге көшіріңіз: әрбір кілт base64 жүйесінде бір жолдан тұрады.

VPN сервері үшін конфигурация файлын жасау (Raspberry Pi)

Конфигурация өте қарапайым, мен келесі файлды жасадым /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

Бір-екі ескерту:

  • Тиісті орындарда пернелері бар файлдардан жолдарды кірістіру керек
  • Менің VPN ішкі жолақты пайдалануда 10.200.200.0/24
  • Командалар үшін PostUp/PostDown Менде wwan0 сыртқы желі интерфейсі бар, сізде басқасы болуы мүмкін (мысалы, eth0)

VPN желісі келесі пәрмен арқылы оңай көтеріледі:

$ sudo wg-quick up wg0

Бір шағын деталь: мен пайдаланған DNS сервері ретінде dnsmasq желі интерфейсімен байланысты br0, мен құрылғыларды да қостым wg0 рұқсат етілген құрылғылар тізіміне. Dnsmasq ішінде бұл конфигурация файлына жаңа желілік интерфейс жолын қосу арқылы жасалады /etc/dnsmasq.conf, мысалы:

interface=br0
interface=wg0

Сонымен қатар, мен UDP тыңдау портына (51280) трафикке рұқсат беру үшін iptable ережесін қостым:

$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

Енді бәрі жұмыс істеп тұр, біз VPN туннелін автоматты түрде іске қосуды орната аламыз:

$ sudo systemctl enable [email protected]

Ноутбукте клиент конфигурациясы

Ноутбукта конфигурация файлын жасаңыз /etc/wireguard/wg0.conf бірдей параметрлермен:

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Ескерту:

  • Edgewalker орнына жалпыға ортақ IP немесе VPN сервер хостын көрсету керек
  • Орнату бойынша AllowedIPs туралы 10.200.200.0/24, біз тек ішкі желіге кіру үшін VPN пайдаланамыз. Барлық басқа IP мекенжайларына/серверлеріне трафик «қалыпты» ашық арналар арқылы өтуді жалғастырады. Ол сонымен қатар ноутбукта алдын ала конфигурацияланған DNS серверін пайдаланады.

Тестілеу және автоматты іске қосу үшін біз бірдей пәрмендерді қолданамыз wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]

Android телефонында клиентті орнату

Android телефоны үшін біз өте ұқсас конфигурация файлын жасаймыз (оны шақырайық mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
        
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

Ноутбуктегі конфигурациядан айырмашылығы, телефон VPN серверін DNS сервері ретінде пайдалануы керек (line DNS), сонымен қатар барлық трафикті VPN туннелі арқылы өткізіңіз (AllowedIPs = 0.0.0.0/0).

Файлды мобильді құрылғыға көшірудің орнына, оны QR кодына түрлендіруге болады:

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

QR коды консольге ASCII ретінде шығады. Оны Android VPN қолданбасынан сканерлеуге болады және автоматты түрде VPN туннелін орнатады.

қорытынды

WireGuard орнату OpenVPN-мен салыстырғанда сиқырлы.

Ақпарат көзі: www.habr.com

пікір қалдыру