Wednesday, May 29, 2019

Cài đặt OpenVPN Server trên OpenWRT

I. Lý do sử dụng VPN Server
- Truy cập mạng gia đình thông qua kết nối an toàn
- Hạn chế việc mở nhiều cổng trên modem dẫn đến nhiều nguy cơ về bảo mật
- An toàn khi truy cập các mạng wifi công cộng khi sử dụng thiết bị di động
- Khi đi xa (nước ngoài) vẫn có thể truy cập Internet như đang ở Việt Nam
Chọn OpenVPN server trên Openwrt là lựa chọn phù hợp nhất do dễ dàng cài đặt và bảo mật phù hợp nhất.
Giả định mạng các bạn đang dùng dạng: MODEM (192.168.0.1) →ROUTER OPENWRT (192.168.1.1) → THIẾT BỊ KẾT NỐI MẠNG (PC, Laptop, Android Box, Phone…). Sau khi cài đặt OpenVPN, dùng laptop cơ quan có thể truy cập các thiết bị ở nhà, truy cập Share folder ở PC ở nhà, thậm chí in ở nhà như mạng Home Lan.
II. Các bước cài đặt
1. Cài đặt Cài đặt OpenVPN Server trên OpenWRT
Yêu cầu:
- Router đã cài đặt Openwrt có bộ nhớ trống hơn 4MB hoặc mở rộng bộ nhớ qua cổng USB.
- Trên Modem mở port 33333 cho IP của Openwrt Router. Trên Router Openwrt đã config DDNS tự cập nhật IP.

Trước hết, sử dụng Putty, kết nối Openwrt, copy & paste lệnh:
opkg update
opkg install openvpn-openssl

# Đợi cài xong, copy&paste tiếp lệnh để config OpenVPN Server

# Configure firewall
uci set firewall.@zone[0].device="tun0"
uci -q delete firewall.vpn
uci set firewall.vpn="rule"
uci set firewall.vpn.name="Allow-OpenVPN"
uci set firewall.vpn.src="wan"
uci set firewall.vpn.dest_port="33333"
uci set firewall.vpn.proto="udp"
uci set firewall.vpn.target="ACCEPT"
uci commit firewall
/etc/init.d/network reload
/etc/init.d/firewall reload

# Configure OpenVPN Server
touch /etc/config/openvpn
uci delete openvpn.sample_server
uci delete openvpn.sample_client
uci set openvpn.myvpn="openvpn"
uci set openvpn.myvpn.enabled="1"
uci set openvpn.myvpn.dev="tun"
uci set openvpn.myvpn.port="33333"
uci set openvpn.myvpn.proto="udp"
uci set openvpn.myvpn.comp_lzo="yes"
uci set openvpn.myvpn.status="/var/log/openvpn_status.log"
uci set openvpn.myvpn.verb="1"
uci set openvpn.myvpn.mute="5"
uci set openvpn.myvpn.keepalive="10 120"
uci set openvpn.myvpn.persist_key="1"
uci set openvpn.myvpn.persist_tun="1"
uci set openvpn.myvpn.ca="/etc/openvpn/ca.crt"
uci set openvpn.myvpn.cert="/etc/openvpn/vpnserver.crt"
uci set openvpn.myvpn.key="/etc/openvpn/vpnserver.key"
uci set openvpn.myvpn.dh="/etc/openvpn/dh.pem"
uci set openvpn.myvpn.cipher="AES-256-CBC"
uci set openvpn.myvpn.mode="server"
uci set openvpn.myvpn.tls_server="1"
uci set openvpn.myvpn.server="172.16.0.0 255.255.255.0"
uci set openvpn.myvpn.topology="subnet"
uci set openvpn.myvpn.route_gateway="dhcp"
uci set openvpn.myvpn.client_to_client="1"
uci add_list openvpn.myvpn.push="comp-lzo yes"
uci add_list openvpn.myvpn.push="persist-key"
uci add_list openvpn.myvpn.push="persist-tun"
uci add_list openvpn.myvpn.push="topology subnet"
uci add_list openvpn.myvpn.push="route-gateway dhcp"
uci add_list openvpn.myvpn.push="redirect-gateway def1"
##Thay 192.168.1.1 các dòng dưới theo địa chỉ IP ROUTER OPENWRT của bạn. (để ý dòng đầu tiên là 192.168.1.0, còn 2 dòng dưới là 192.168.1.1 nhé)
uci add_list openvpn.myvpn.push="route 192.168.1.0 255.255.255.0"
uci add_list openvpn.myvpn.push="dhcp-option DOMAIN 192.168.1.1"
uci add_list openvpn.myvpn.push="dhcp-option DNS 192.168.1.1"
uci commit openvpn

#Xong phần Config OPENVPN Server

2. Tạo Certificate key (thực hiện trên Windows cho đơn giản)
Công cụ:
- EasyRSA for Windows: Tìm http://EasyRSA-windows-v.xxx.zip tải về và giải nén ra Desktop
- OpenSSL cho Windows: Tải và cài đặt, xong tìm đường dẫn đến openssl.exe để lát sử dụng (ví du: C:\Program Files\OpenSSL-Win32\bin\openssl.exe)
- Truy cập Folder EasyRSAvx.x.x vừa giải nén, đổi tên file vars.example thành vars . Sau đó mở file vars bằng Notepad lên, xóa hết thay bằng các dòng sau:

# Đường dẫn đến file openssl.exe
set_var EASYRSA_OPENSSL "C:/Program Files/OpenSSL-Win32/bin/openssl.exe"
# Thông tin chung
set KEY_COUNTRY=VN
set KEY_PROVINCE=HN
set KEY_CITY=Hanoi
set KEY_ORG=My_OpenVPN
set KEY_EMAIL=myopenvpn@home.net

Xong đóng cửa sổ notepad và lưu lại . Chạy file EasyRSA-Start.bat , copy&paste từng dòng 1:
./easyrsa init-pki
./easyrsa clean-all
./easyrsa gen-dh
./easyrsa build-ca nopass
./easyrsa build-server-full vpnserver nopass
./easyrsa build-client-full vpnclient nopass
# Nếu xuất hiện dòng Confirm removal: , cứ gõ yes.

Sau khi chạy xong, quay lại folder EasyRSA, vào thư mục pki, lưu các file mới tạo để sử dụng cho OpenVPN server của bạn. Tạo 2 thư mục openvpn và client trên Desktop , copy các file sau vào folder mới tạo, tương ứng:
# folder openvpn gồm 4 file:
EasyRSA\pki\dh.pem
EasyRSA\pki\ca.crt
EasyRSA\pki\issued\vpnserver.crt
EasyRSA\pki\private\vpnserver.key

# folder client gồm 3 file:
EasyRSA\pki\ca.crt
EasyRSA\pki\private\vpnclient.key
EasyRSA\pki\issued\vpnclient.crt
Chạy WinSCP, kết nối với Openwrt Router , copy cả folder openvpn ở trên vào thư mục /etc của openwrt. Dùng Putty.exe kết nối router, gõ lệnh:

chmod -R 600 /etc/openvpn
/etc/init.d/openvpn enable
/etc/init.d/openvpn restart
logread
Kết quả hiển thị dòng cuối "Initialization Sequence Completed" là được

Sau đó khởi động lại Router là xong việc tạo OpenVPN Server trên Openwrt.

3. CONFIG OPENVPN CLIENT TRÊN CÁC THIẾT BỊ.
Mở Notepad , paste các nội dung

dev tun
proto udp
client
auth-nocache
remote-cert-tls server
# Sửa dòng dưới thành địa chỉ DDNS của bạn
remote abc123.no-ip.org 33333

# Mở file ca.crt bằng Notepad ở folder client, copy&paste nội dung file vào phần dưới
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>

# Mở file vpnclient.crt bằng Notepad, copy&paste nội dung file vào phần dưới

<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>

# Mở file vpnclient.key bằng Notepad, copy&paste nội dung file vào phần dưới

<key>
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
</key>

Xong lưu thành file "my_client.opvn" (tham khảo file mẫu my_client.opvn)
4. Kết nối với OpenVPN Server
Trên các thiết bị, tải ứng dụng
OpenVPN Connect cho WindowsAndroid, hoặc IOS
Sau khi cài đặt, bật ứng dụng lên, Import file my_client.opvn vừa tạo vào và kết nối thử
Trên Andorid và IOS, có thể chuyển file my_client.opvn bằng cách gửi mail và mở file đính kèm bằng ứng dụng OpenVPN Connect là đc.
Kết nối thử và trải nghiêm.
Chúc thành công