WireGuard болон Raspberry Pi ашиглан энгийн VPN-г сервер болгон тохируулж байна

Учир нь WireGuard хэсэг болно Удахгүй гарах Линуксийн цөмийн 5.6 хувилбарын хувьд би энэ VPN-г өөрийн төхөөрөмжтэй хэрхэн хамгийн сайн уялдуулахыг харахаар шийдсэн. Raspberry Pi дээрх LTE чиглүүлэгч/ хандалтын цэг.

Тоног төхөөрөмж

  • Raspberry Pi 3 нь LTE модуль болон нийтийн IP хаягтай. Энд VPN сервер байх болно (цаашид үүнийг бичвэрт гэж нэрлэдэг захад явагч)
  • Бүх харилцаанд VPN ашиглах ёстой Android утас
  • Сүлжээнд зөвхөн 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

Би Андройд утсан дээрээ програм суулгасан 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]

Андройд утсан дээр үйлчлүүлэгч тохируулах

Андройд утасны хувьд бид маш төстэй тохиргооны файл үүсгэдэг (үүнийг нэрлэе 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-тэй харьцуулахад зүгээр л ид шид юм.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх