Пошто WireGuard будуће језгро Linux 5.6, одлучио сам да видим како најбоље да интегришем овај VPN са мојим .
Оборудование
- Распберри Пи 3 са ЛТЕ модулом и јавном ИП адресом. Овде ће постојати ВПН сервер (у даљем тексту се зове едгевалкер)
- Телефон укључен Android, који мора да користи VPN за сву комуникацију
- Лаптоп Linux, који би требало да користи VPN само унутар мреже
Сваки уређај који се повезује на ВПН мора бити у могућности да се повеже са свим другим уређајима. На пример, телефон би требало да буде у могућности да се повеже са веб сервером на лаптопу ако су оба уређаја део ВПН мреже. Ако се испостави да је подешавање прилично једноставно, онда можете размислити о повезивању радне површине са ВПН-ом (преко Етхернета).
Имајући у виду да жичне и бежичне везе временом постају све мање безбедне (, и ), озбиљно размишљам да користим 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 Користи једноставну шему приватног/јавног кључа за аутентификацију 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.confQR код ће бити приказан на конзоли као ASCII. Може се скенирати из апликације. Android VPN и аутоматски конфигуришите VPN тунел.
Излаз
подешавање WireGuard једноставно магично у поређењу са OpenVPN.
Извор: ввв.хабр.цом
