Hướng dẫn cài đặt OpenVPN trên VPS Centos
1. Giới thiệu:
- Bài viết này sẽ hướng dẫn khách hàng cách cài đặt và cấu hình OpenVPN server trên hệ điều hành CentOS 6.
- Trước khi bắt đầu, khách hàng cần cài thêm Reposity Extra Packages for Enterprise Linux (EPEL) của hãng thứ ba là Fedora Project cung cấp gói OpenVPN
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm
2. Cài đặt và cấu hình:
- Đầu tiên, khách hàng cài đặt gói OpenVPN từ EPEL cùng với gói easy-rsa để tạo key/certificate, bởi vì từ phiên bản OpenVPN 2.3.2 thì easy-rsa không còn được tích hợp chung với OpenVPN.
yum install openvpn easy-rsa -y
Lưu ý nhớ tắt SELinux trước
- OpenVPN cung cấp file cấu hình mẫu, khách hàng copy file này đến thư mục gốc "/etc/openvpn"
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
- Tiếp theo, mở file server.conf để cấu hình
nano -w /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"
- Khách hàng có thể sử dụng DNS server của Google bằng cách thêm hai dòng sau:
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
- Ngoài ra để tăng tính bảo mật, khách hàng uncomment hai dòng sau để OpenVPN không thuộc quyền sở hữu của user hay group nào.
user nobody
group nobody
3. Tạo Keys và Certificates sử dụng easy-rsa
- Sau khi sửa file cấu hình xong, đi đến thư mục /usr/share/easy-rsa/2.0 và mở file vars
cd /usr/share/easy-rsa/2.0
vi vars
- Tìm đến dòng có biến "KEY_" nằm ở gần cuối file. Sửa lại các thông tin khách hàng có dạng như sau:
export KEY_COUNTRY="VN"
export KEY_PROVINCE="HCM"
export KEY_CITY="Ho Chi Minh"
export KEY_ORG="Organization Name"
export KEY_EMAIL="administrator@vinahost.com"
export KEY_CN=vinahost.vn
export KEY_NAME=server
export KEY_OU=server
- Sửa lại dòng sau
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
thành
export KEY_CONFIG=/usr/share/easy-rsa/2.0/openssl-1.0.0.cnf
- Tiếp theo, build CA dựa trên những thông tin vừa cấu hình ở trên
./clean-all
source ./vars
./build-ca
- Build file Diffie Hellman là một thuật toán để tạo khóa
./build-dh
- Tạo certificate và key cho OpenVPN server. Khi được hỏi bởi build-key-server, chọn yes để xác nhận.
./build-key-server server
- Copy những những file vừa tạo (CA, certificate, key, Deffie Hellman) vào thư mục gốc /etc/openvpn
cd keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn
- Tạo cặp key/certificate cho client, mỗi client sẽ có riêng một cặp key/certificate khác nhau
cd /usr/share/easy-rsa/2.0
./build-key clientname
- Khách hàng cần cung cấp cho client ba file sau:
+ ca.crt: file thông dụng
+ clientname.crt: file riêng tư, không share cho bất kì ai khác
+ clientname.key: file riêng tư, không share cho bất kì ai khác
- Bật IP forwarding, sửa tham số net.ipv4.ip_forward = 1
nano -w /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
- 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
service iptables save
- Bật OpenVPN server và cho phép dịch vụ chạy lúc khởi động
service openvpn start
chkconfig opepnvpn on
- Sử dụng lệnh sau để chắc chắn OpenVPN server đang hoạt động
ifconfig -a |grep -A 7 tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)