Сервер катары WireGuard жана Raspberry Pi менен жөнөкөй VPN орнотуу

Анткени WireGuard бөлүгү болуп калат келе жаткан Linux ядросу 5.6, мен бул VPNди өзүмдүн менен кантип интеграциялоону чечтим Raspberry Piдеги LTE роутер/кирүү чекити.

жабдуулар

  • Raspberry Pi 3 LTE модулу жана коомдук IP дареги менен. Бул жерде VPN сервери болот (мындан ары текстте ал деп аталат edgewalker)
  • Бардык байланыштар үчүн VPN колдонушу керек болгон Android телефону
  • Тармак ичинде VPN гана колдонушу керек болгон Linux ноутбуку

VPNге туташкан ар бир түзмөк башка бардык түзмөктөргө туташа алышы керек. Мисалы, эки түзмөк тең VPN тармагынын бир бөлүгү болсо, телефон ноутбуктагы веб-серверге туташа алышы керек. Орнотуу абдан жөнөкөй болуп чыкса, анда сиз иш тактасын VPNге (Ethernet аркылуу) туташтыруу жөнүндө ойлонсоңуз болот.

Убакыттын өтүшү менен зымдуу жана зымсыз байланыштар азыраак коопсуз болуп баратканын эске алсак (максаттуу чабуулдар, KRACK WPA2 крекинг чабуулу и WPA3 каршы Dragon Blood чабуулу), Мен 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 сервери катары колдонушу керек (сап 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ге салыштырмалуу сыйкырдуу.

Source: www.habr.com

Комментарий кошуу