Thiết lập VPN đơn giản với WireGuard và Raspberry Pi làm máy chủ

Kể từ khi WireGuard sẽ trở thành một phần cốt lõi tương lai Linux 5.6, tôi quyết định tìm hiểu cách tốt nhất để tích hợp VPN này với hệ thống của mình. Bộ định tuyến/điểm truy cập LTE trên Raspberry Pi.

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

  • Raspberry Pi 3 với mô-đun LTE và địa chỉ IP công cộng. Sẽ có một máy chủ VPN ở đây (sau đây trong văn bản nó được gọi là người đi cạnh)
  • Điện thoại đang bật Androidvà phải sử dụng VPN cho tất cả các hoạt động liên lạc.
  • Máy tính xách tay Linux, và chỉ nên sử dụng VPN trong phạm vi mạng.

Mọi thiết bị kết nối với VPN phải có khả năng kết nối với tất cả các thiết bị khác. Ví dụ: điện thoại có thể kết nối với máy chủ web trên máy tính xách tay nếu cả hai thiết bị đều là một phần của mạng VPN. Nếu quá trình thiết lập khá đơn giản, thì bạn có thể nghĩ đến việc kết nối máy tính để bàn với VPN (thông qua Ethernet).

Xét rằng các kết nối có dây và không dây ngày càng trở nên kém an toàn hơn theo thời gian (các cuộc tấn công có chủ đích, Tấn công bẻ khóa KRACK WPA2 и Cuộc tấn công Dragonblood chống lại WPA3), Tôi đang nghiêm túc cân nhắc việc sử dụng WireGuard Áp dụng cho tất cả các thiết bị của tôi, bất kể chúng hoạt động trong môi trường nào.

Cài đặt phần mềm

WireGuard cung cấp gói biên dịch trước đối với hầu hết các bản phân phối Linux, Windows и macOSĐơn đăng ký cho Android và iOS được phân phối thông qua các cửa hàng ứng dụng.

Tôi đang dùng phiên bản Fedora mới nhất. Linux 31, và trước khi cài đặt tôi quá lười đọc hướng dẫn sử dụng. Tôi chỉ tìm các gói hàng thôi. wireguard-tools, cài đặt chúng và sau đó không thể hiểu tại sao không có gì hoạt động. Điều tra sâu hơn cho thấy tôi chưa cài đặt gói này wireguard-dkms (với trình điều khiển mạng), nhưng nó không có trong kho phân phối của tôi.

Nếu tôi đã đọc hướng dẫn, tôi sẽ thực hiện các bước chính xác:

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

Tôi đã cài đặt bản phân phối Raspbian Buster trên Raspberry Pi của mình, ở đó đã có sẵn một gói rồi wireguard, cài đặt nó:

$ sudo apt install wireguard

Trên điện thoại Android Tôi đã cài đặt ứng dụng WireGuard VPN từ danh mục chính thức của Google App Store.

Cài đặt các phím

Để xác thực các nút Wireguard Sử dụng sơ đồ khóa riêng/công khai đơn giản để xác thực các nút VPN. Bạn có thể dễ dàng tạo khóa VPN bằng lệnh sau:

$ 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

Điều này cung cấp cho chúng tôi ba cặp khóa (sáu tệp). Chúng tôi sẽ không đề cập đến các tệp trong cấu hình mà sao chép nội dung ở đây: mỗi khóa là một dòng trong base64.

Tạo file cấu hình cho máy chủ VPN (Raspberry Pi)

Cấu hình khá đơn giản, mình tạo file sau /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

Một vài lưu ý:

  • Ở những nơi thích hợp, bạn cần chèn dòng từ tệp bằng phím
  • VPN của tôi đang sử dụng băng tần nội bộ 10.200.200.0/24
  • Đối với các đội PostUp/PostDown Tôi có giao diện mạng bên ngoài wwan0, bạn có thể có giao diện mạng khác (ví dụ: eth0)

Mạng VPN có thể dễ dàng được nâng cấp bằng lệnh sau:

$ sudo wg-quick up wg0

Một chi tiết nhỏ: là máy chủ DNS tôi đã sử dụng dnsmasq gắn liền với giao diện mạng br0, Tôi cũng đã thêm thiết bị wg0 vào danh sách các thiết bị được phép. Trong dnsmasq, việc này được thực hiện bằng cách thêm một dòng giao diện mạng mới vào tệp cấu hình /etc/dnsmasq.conf, ví dụ:

interface=br0
interface=wg0

Ngoài ra, tôi đã thêm quy tắc iptable để cho phép lưu lượng truy cập vào cổng nghe UDP (51280):

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

Bây giờ mọi thứ đã hoạt động, chúng ta có thể thiết lập khởi chạy tự động đường hầm VPN:

$ sudo systemctl enable wg-quick@wg0.service

Cấu hình máy khách trên máy tính xách tay

Tạo file cấu hình trên laptop /etc/wireguard/wg0.conf với cùng các cài đặt:

[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

Ghi chú:

  • Thay vì edgewalker, bạn cần chỉ định máy chủ IP công cộng hoặc máy chủ VPN
  • Bằng cách thiết lập AllowedIPs trên 10.200.200.0/24, chúng tôi chỉ sử dụng VPN để truy cập mạng nội bộ. Lưu lượng truy cập đến tất cả các địa chỉ IP/máy chủ khác sẽ tiếp tục đi qua các kênh mở “bình thường”. Nó cũng sẽ sử dụng máy chủ DNS được cấu hình sẵn trên máy tính xách tay.

Để thử nghiệm và khởi chạy tự động, chúng tôi sử dụng các lệnh tương tự wg-quick и systemd:

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

Thiết lập máy khách cho Android-điện thoại

Dành cho điện thoại Android Chúng ta tạo một tệp cấu hình rất tương tự (hãy gọi nó là...). 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

Không giống như cấu hình trên máy tính xách tay, điện thoại phải sử dụng máy chủ VPN của chúng tôi làm máy chủ DNS (dòng DNS) và cũng chuyển tất cả lưu lượng truy cập qua đường hầm VPN (AllowedIPs = 0.0.0.0/0).

Thay vì sao chép tệp vào thiết bị di động, bạn có thể chuyển đổi tệp thành mã QR:

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

Mã QR sẽ được xuất ra màn hình console dưới dạng ASCII. Có thể quét mã này từ ứng dụng. Android VPN và tự động cấu hình đường hầm VPN.

Đầu ra

điều chỉnh WireGuard đơn giản là kỳ diệu so với OpenVPN.

Nguồn: www.habr.com

Mua dịch vụ lưu trữ đáng tin cậy cho các trang web có bảo vệ DDoS, máy chủ VPS VDS 🔥 Mua dịch vụ hosting website đáng tin cậy với bảo vệ DDoS, máy chủ VPS VDS | ProHoster