Подешавање једноставног VPN-а са WireGuard и Raspberry Pi као сервер

Пошто WireGuard постаће део будуће језгро Linux 5.6, одлучио сам да видим како најбоље да интегришем овај VPN са мојим ЛТЕ рутер/приступна тачка на Распберри Пи.

Оборудование

  • Распберри Пи 3 са ЛТЕ модулом и јавном ИП адресом. Овде ће постојати ВПН сервер (у даљем тексту се зове едгевалкер)
  • Телефон укључен Android, који мора да користи VPN за сву комуникацију
  • Лаптоп Linux, који би требало да користи VPN само унутар мреже

Сваки уређај који се повезује на ВПН мора бити у могућности да се повеже са свим другим уређајима. На пример, телефон би требало да буде у могућности да се повеже са веб сервером на лаптопу ако су оба уређаја део ВПН мреже. Ако се испостави да је подешавање прилично једноставно, онда можете размислити о повезивању радне површине са ВПН-ом (преко Етхернета).

Имајући у виду да жичне и бежичне везе временом постају све мање безбедне (циљани напади, КРАЦК ВПА2 напад на крековање и Драгонблоод напад на ВПА3), озбиљно размишљам да користим WireGuard за све моје уређаје, без обзира у ком окружењу раде.

Инсталација софтвера

WireGuard обезбеђује унапред компајлирани пакети за већину дистрибуција Linux, Windows и macOSПријаве за Android и iOS се испоручују преко продавница апликација.

Имам најновију Федору Linux 31, и пре инсталације сам био превише лењ да прочитам упутство. Само сам пронашао пакете. wireguard-tools, инсталирао их, а затим нисам могао да схватим зашто ништа не ради. Даља истрага је открила да немам инсталиран пакет wireguard-dkms (са мрежним драјвером), али није био у спремишту моје дистрибуције.

Да сам прочитао упутства, предузео бих исправне кораке:

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

Имам инсталирану Распбиан Бустер дистрибуцију на мом Распберри Пи, тамо већ постоји пакет wireguard, инсталирајте га:

$ sudo apt install wireguard

На телефон Android Инсталирао сам апликацију WireGuard ВПН из званичног каталога Гоогле Апп Сторе-а.

Уградња кључева

За аутентификацију чворова 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

Ово нам даје три пара кључева (шест датотека). Нећемо се позивати на датотеке у конфигурацијама, али копирајте садржај овде: сваки кључ је један ред у басе64.

Креирање конфигурационе датотеке за ВПН сервер (Распберри Пи)

Конфигурација је прилично једноставна, направио сам следећу датотеку /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

Пар напомена:

  • На одговарајућим местима потребно је да уметнете линије из датотека са кључевима
  • Мој ВПН користи интерни опсег 10.200.200.0/24
  • За тимове PostUp/PostDown Имам спољни мрежни интерфејс вван0, ви можда имате други (на пример, етх0)

ВПН мрежа се лако подиже следећом командом:

$ sudo wg-quick up wg0

Један мали детаљ: као ДНС сервер који сам користио dnsmasq везан за мрежни интерфејс br0, додао сам и уређаје wg0 на листу дозвољених уређаја. У днсмаск-у се ово ради додавањем нове линије мрежног интерфејса у конфигурациони фајл /etc/dnsmasq.conf, на пример:

interface=br0
interface=wg0

Поред тога, додао сам иптабле правило да дозволи саобраћај на УДП порт за слушање (51280):

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

Сада када све функционише, можемо да подесимо аутоматско покретање ВПН тунела:

$ sudo systemctl enable wg-quick@wg0.service

Конфигурација клијента на лаптопу

Направите конфигурациону датотеку на лаптопу /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

Напомене:

  • Уместо едгевалкер-а потребно је да наведете јавни ИП или ВПН сервер
  • Постављањем AllowedIPs на 10.200.200.0/24, ми користимо само ВПН за приступ интерној мрежи. Саобраћај ка свим осталим ИП адресама/серверима ће наставити да иде кроз „нормалне“ отворене канале. Такође ће користити унапред конфигурисани ДНС сервер на лаптопу.

За тестирање и аутоматско покретање користимо исте команде wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.service

Подешавање клијента за 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

За разлику од конфигурације на лаптопу, телефон мора да користи наш ВПН сервер као ДНС сервер (линија DNS), а такође пропушта сав саобраћај кроз ВПН тунел (AllowedIPs = 0.0.0.0/0).

Уместо да копирате датотеку на свој мобилни уређај, можете да је конвертујете у КР код:

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

QR код ће бити приказан на конзоли као ASCII. Може се скенирати из апликације. Android VPN и аутоматски конфигуришите VPN тунел.

Излаз

подешавање WireGuard једноставно магично у поређењу са OpenVPN.

Извор: ввв.хабр.цом

Купите поуздан хостинг за сајтове са ДДоС заштитом, ВПС ВДС сервере 🔥 Купите поуздан веб хостинг са DDoS заштитом, VPS VDS сервере | ProHoster