OpenVPN là một giải pháp mã nguồn mở VPN hoàn toàn miễn phí, có tính linh hoạt cao sử dụng tất cả các tính năng mã hóa, xác thực và chứng nhận của thư viện OpenSSL để tạo ra một đường hầm mạng IP trên một cổng TCP/UDP duy nhất.
Bài viết này sẽ hướng dẫn các bạn cài đặt và cấu hình VPN server sử dụng OpenVPN trên Centos 6. Đồng thời cũng hướng dẫn các bạn cấu hình VPN trên máy khách Windows hoặc Linux để kết nối đến máy chủ VPN.
Contents
Cài đặt và cấu hình VPN Server
Cài đặt OpenVPN
Trước khi bắt đầu, bạn cần cài đặt repo Extra Packages for Enterprise Linux (EPEL) trên máy chủ VPN. Đây là kho lưu trữ bên thứ ba được cung cấp bởi dự án Fedora sẽ cung cấp gói OpenVPN
yum install epel-release
Tiến hành cài đặt OpenVPN từ repo EPEL:
yum -y install openvpn easy-rsa
OpenVPN cung cấp tập tin cấu hình mẫu, chúng ta sẽ sao chép tập tin cấu hình này đến thư mục /etc/openvpn/
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
Tạo Key và Certificate
Tạo thư mục chứa Key và Certificate, sau đó sao chép các script OpenVPN vào thư mục này
mkdir -p /etc/openvpn/easy-rsa/keys cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
Mở file vars và tiến hành chỉnh sửa
vi /etc/openvpn/easy-rsa/vars
Tìm các dòng có biến “KEY_” nằm ở gấn cuối file. Sửa lại các thông tin có dạng như sau:
export KEY_COUNTRY="VN" export KEY_PROVINCE="HCM" export KEY_CITY="Ho Chi Minh" export KEY_ORG="Luu Tru So" export KEY_EMAIL="duyngoc@123host.vn" export KEY_OU="Technical" export KEY_NAME="server" export KEY_CN="123host.vn"
Tiến hành build CA dựa trên những thông tin vừa cấu hình ở trên:
cd /etc/openvpn/easy-rsa source ./vars ./clean-all ./build-ca
Bây giờ chúng ta đã có CA certificate và CA key. Tiếp theo tạo certificate và key cho OpenVPN server bằng lệnh sau. Khi được hỏi bởi build-key-server, chọn yes để xác nhận.
./build-key-server server
Tiếp theo build file Diffie Hellman là một thuật toán trao đổi khóa.
./build-dh
Sao chép tất cả những file vừa tạo (CA, certificate, key, Diffie Hellman) vào thư mục /etc/openpvn
cd keys cp dh2048.pem ca.crt server.crt server.key /etc/openvpn
Để các máy khách có thể kết nối VPN đến máy chủ OpenVPN, chúng ta cần tạo certificate và key cho máy khách. Sử dụng lệnh sau để tạo cặp key/certificate cho client, mỗi client sẽ có cặp key/certificate khác nhau
cd /etc/openvpn/easy-rsa ./build-key client
Cấu hình OpenVPN Server
Mở file cấu hình server.conf và tiến hành chỉnh sửa
vi /etc/openvpn/server.conf
Bỏ dấu “#” (uncomment) tại dòng sau để cấu hình client sử dụng default gateway thông qua VPN, do đó tất cả traffic của client sẽ đi qua VPN
push "redirect-gateway def1 bypass-dhcp"
Thêm các máy chủ DNS Google
push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"
Ngoài ra, để tăng cường bảo mật, chúng ta sẽ uncomment hai dòng sau để OpenVPN chạy dưới quyền nobody
user nobody group nobody
Chỉ định địa chỉ sẽ cấp cho VPN Client khi kết nối đến VPN Server
server 10.8.0.0 255.255.255.0
Comment dòng sau:
# explicit-exit-notify 1
Mặc định thì OpenVPN Server sử dụng port UDP 1194. Chúng ta có thể thay đổi port này hoặc để nguyên. Thí dụ chúng ta sẽ thay đổi port kết nối thành port tcp 443
port 443 proto tcp
Tiến hành mở port 443 trên firewall cho phép các kết nối từ client
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
Lưu và khởi động lại firewall
service iptables save service iptables restart
Cấu hình IP forwarding và routing
Mở file sysctl.conf
vi /etc/sysctl.conf
Tìm dòng sau và đặt giá trị là “1” để bật IP forwarding
# Controls IP packet forwarding net.ipv4.ip_forward = 1
Chạy lệnh sau để nạp cấu hình vừa thay đổi
sysctl -p
Cấu hình firewall cho phép routing qua VPN subnet
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Lưu và khởi động lại iptables
service iptables save service iptables restart
Khởi động OpenVPN Server
Sau khi đã hoàn tất thiết lập ở các bước trên, chúng ta tiến hành khởi động OpenVPN server và cho phép khởi động cùng OS
service openvpn start chkconfig openvpn on
Sau khi đã khởi động VPN server, một đường hầm (tun0) sẽ được tạo ra, sử dụng lệnh ifconfig để kiểm tra:
ifconfig -a |grep -A 7 tun0
Cài đặt và cấu hình VPN Client
Trên CentOS
Cài đặt gói openvpn từ yum bằng các lệnh sau:
yum -y install epel-release yum -y install openvpn
Sao chép 3 file ca.crt, client.crt, client.key vào thư mục /etc/openvpn
Sao chép tập tin cấu hình client mẫu của OpenVPN vào thư mục /etc/openvpn
cp /usr/share/doc/openvpn-*/sample/sample-config-files/client.conf /etc/openvpn
Mở file cấu hình client.conf và tiến hành chỉnh sửa
vi /etc/openvpn/client.conf
Tiến hành chỉnh sửa thông số ip và port kết nối của VPN server
remote [ip-server] [port]
Lưu file và khởi động dịch vụ
openvpn /etc/openvpn/client.conf
Kết nối đến VPN server thành công
Trên Windows
Download phần mềm OpenVPN Client cho Windows tại đây. Sau khi download tiến hành cài đặt OpenVPN Client
Sao chép 3 file ca.crt, client.crt, client.key vào thư mục C:\Program Files\OpenVPN\config
Copy file client.ovpn trong C:\Program Files\OpenVPN\sample-config đến C:\Program Files\OpenVPN\config
Mở file client.ovpn và chỉnh sửa thông tin IP và Port của VPN server
Mở OpenVPN GUI chọn Connect
Kết luận
Nếu bạn đã thực hiện lần lượt theo các bước hướng dẫn trên, đến đây bạn đã có một VPN server hoạt động trên mạng internet. Bạn có thể kiểm tra rằng lưu lượng truy cập của máy client đang được định tuyến qua VPN bằng cách kiểm tra địa chỉ IP Public trên Google.
Leave A Comment?