Wireguard trên Alpine Linux
Chạy Wireguard trên Alpine linux là một trải nghiệm thú vị. Bài viết này sẽ được chia làm 2 phần, phần thứ nhát sẽ hướng dẫn cài đặt Wireguard ở phía server. Phần thứ 2 của bài viết sẽ hướng dẫn bạn chạy Wireguard client trên Alpine linux. Cả hai phía trong hướng dẫn đều sử dụng bản phân phối Alpine. Tuy nhiên ở phía client bạn có thể sử dụng trên bất kì hệ điều hành nào mà Wireguard hỗ trợ.
Nếu đây là lần đầu bạn thực hiện cài đặt Wireguard
trên Linux thì bạn nên tham khảo bài viết này trước khi bắt đầu.
Cài Đặt Wireguard trên Alpine Linux
Các lệnh cài đặt Wireguard trên Alpine Linux là giống nhau trên Server và Client.
Trước tiên, bạn cần biết thông tin nhân phiên bản Linux được cài đặt, kết quả sau cho thấy nhân phiên bản Linux đang được cài đặt là 5.10
:
# uname -rsm
Linux 5.10.36-0-virt x86_64
Kể từ phiên bản nhân linux 5.6
trở đi, Wireguard được tích hợp trong nhân Linux nên các gói wireguard-lts
và wireguard-virt
như cách cài đặt trước đó đã được lượt bỏ. Do đó, trên Alpine 3.13 trở đi, bạn chỉ cần cài wireguard-tools
sử dụng câu lệnh sau.
# apk add wireguard-tools
Sau đó load module
# modprobe wireguard
Thực chất, Wireguard không phân biệt Server
hay Client
như các phần mềm như OpenVPN
mà sử dụng thuật ngữ Peer
bởi vì 2 máy được kết nối với nhau theo giao thức ngang hàng. Để dễ hiểu bài viết này vẫn sử dụng cách diễn đạt bằng mô hình Client-Server
đó:
Server/VPS-Peer
File cấu hình Wireguard
Cũng tương tự như các bản phân phối Linux khác, file cấu hình Wireguard được lưu ở thư mục /etc/wireguard/
[Interface]
Address = 10.10.0.1
ListenPort = 51820
PrivateKey = SG1nXk2+kAAKnMkL5aX3NSFPaGjf9SQI/wWwFj9l9U4=
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;iptables -A FORWARD -o %i -j ACCEPT
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;iptables -D FORWARD -o %i -j ACCEPT
Dòng cấu hình PostUp
và PostDown
là để đảm bảo giao thức (interface
) wg0 sẽ chấp nhận và chuyển tiếp lưu lượng đến eth0
.
Chuyển tiếp lưu lượng
# cat << EOF >> /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
EOF
Sửa thông số IPFORWARD
từ no
sang yes
lại như sau:
vi /etc/conf.d/iptables
IPFORWARD="yes"
rc-service iptables restart
Cấu hình interface
vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 10.10.0.1
netmask 255.255.255.0
hostname wg
post-up wg-quick up /etc/wireguard/wg0.conf
post-down wg-quick down /etc/wireguard/wg0.conf
Tường lửa
- Nếu bạn sử dụng tường lửa
UFW
# sudo ufw allow <ListenPort>/udp
- Nếu bạn sử dụng tường lửa
Awall
:
vi /etc/awall/optional/wireguard.json
{
"description": "Allow incoming WireGuard UDP port 13620",
"filter": [
{
"in": "WAN",
"out": "_fw",
"service": "wireguard",
"action": "accept"
}
]
}
vi /etc/awall/optional/vpntraffic.json
{
"description": "Allow VPN traffic for selected ports",
"filter": [
{
"in": "VPN",
"out": "_fw",
"service": [ "ssh", "dns", "squid", "ping" ],
"action": "accept",
"src": "172.16.4.0/24"
}
]
}
awall enable wireguard vpntraffic
Kiểm tra cổng đã mở
# iptables -S | grep 13620
-A INPUT -i eth0 -p udp -m udp --dport 13620 -j ACCEPT
Kích hoạt Wireguard
Kích hoạt interface wg0
# wg-quick up wg0
Client/Peer
Việc sử dụng Wireguard ở phía client là khá dễ dàng, bạn chỉ việc nhập file cấu hình bằng cách quét hoặc import, kích hoạt và chạy. Tuy nhiên bài viết này hướng dẫn bạn tiếp cận ở phía client bằng một cách khác, đó là chạy client Wireguard bằng cách sử dụng dòng lệnh.
Tương tự phía server, file cấu hình Wireguard cũng được lưu ở thư mục /etc/wireguard/
# sudo nano /etc/wireguard/wg-client0.conf
Nhập nội dung bạn đã có sẵn vào file trên, lưu và thoát.
Kiểm tra Public IP
curl ifconfig.me
Khởi động cùng hệ thống trên Alpine Linux
Thêm file wireguard có nội dung như bên dưới ở thử mục /etc/init.d/
, cho phép thực thi bằng lệnh chmod
và khởi chạy cùng hệ thống trên Alpine bằng rc-update
nano /etc/init.d/wireguard
chmod +x /etc/init.d/wireguard
rc-update add wireguard default
Tham khảo
https://www.reddit.com/r/AlpineLinux/comments/mlfak9/alpine_as_wireguard_server/