Cách cấu hình và kết nối với server OpenVPN riêng trên FreeBSD 10.1
OpenVPN là ứng dụng server / client mạng riêng ảo (VPN) open-souce cho phép bạn tham gia mạng ảo (tương tự như mạng LAN) một cách an toàn.Hướng dẫn này sẽ giải thích cách cài đặt và cấu hình server OpenVPN trên máy FreeBSD 10.1 với IPv4 NAT và định tuyến. Nó bao gồm các giải thích ngắn về các tùy chọn cấu hình khác nhau.
Đến cuối hướng dẫn này, bạn sẽ chạy server OpenVPN của riêng mình và có sẵn file cấu hình client để download để kết nối với mạng này.
Yêu cầu
- Một server FreeBSD 10.1. Kích thước server phụ thuộc vào số lượng client bạn định kết nối với VPN; 519 MB là tốt cho một số khách hàng
- Quyền truy cập root. sudo được cài đặt sẵn trên DigitalOcean, vì vậy không cần làm gì thêm
Hướng dẫn này yêu cầu quyền truy cập root. Trên DigitalOcean, truy cập server với quyền là user freebsd mặc định, sau đó truy cập root shell:
sudo tcsh Bước 1 - Cài đặt OpenVPN
 Cài đặt OpenVPN với hệ thống pkg khá đơn giản. Chỉ cần chạy các lệnh sau để cập nhật danh sách gói và cài đặt phần mềm VPN:
pkg update pkg install openvpn Điều này cũng sẽ cài đặt gói easy-rsa , gói này sẽ được sử dụng để tạo các cặp khóa SSL.
Bước 2 - Cấu hình Server OpenVPN
Đối với hướng dẫn này, ta sẽ dựa trên file cấu hình mẫu do OpenVPN cung cấp. Ta sẽ tạo một folder cấu hình cho OpenVPN:
mkdir /usr/local/etc/openvpn Sao chép file  ví dụ server.conf vào folder  mới.
cp /usr/local/share/examples/openvpn/sample-config-files/server.conf /usr/local/etc/openvpn/server.conf Cài đặt nano hoặc editor  yêu thích của bạn:
pkg install nano Mở file cấu hình để chỉnh sửa:
nano /usr/local/etc/openvpn/server.conf Lưu ý: Định dạng file cấu hình OpenVPN đặt tiền tố cho comment bằng dấu chấm phẩy (
;) hoặc dấu thăng (#). Trong ví dụ này, dấu chấm phẩy được sử dụng để comment (vô hiệu hóa) các tùy chọn cấu hình và dấu thăng được sử dụng cho comment .
Nếu bạn biết tùy chọn cấu hình nào bạn muốn sửa đổi, bạn có thể làm như vậy tại thời điểm này.
-  porttùy chọn : Cổng mặc định là 1194, nhưng bạn có thể thay đổi cổng này thành bất kỳ thứ gì bạn thích
-  prototùy chọn : Chọntcphoặcudp; mặc định là ổn
-  uservàgroup: Đặt chúng thànhnobodybằng cách bỏ ghi chú các dòng. Điều này sẽ làm cho OpenVPN chạy với ít quyền hơn, để bảo mật
user nobody group nobody Lưu ý: Mỗi cấu hình chỉ có thể chạy một cổng và giao thức cùng một lúc.
Cuối cùng, hãy nhớ lưu các thay đổi .
Bước 3 - Tạo certificate và khóa server
 easy-rsa giúp tạo certificate  và khóa đơn giản.
Đầu tiên, sao chép chương trình vào folder cấu hình của bạn, vì bạn sẽ sửa đổi các giá trị.
cp -r /usr/local/share/easy-rsa /usr/local/etc/openvpn/easy-rsa Mở file  vars để chỉnh sửa:
nano /usr/local/etc/openvpn/easy-rsa/vars Thay đổi kích thước khóa bằng cách sửa đổi dòng này:
export KEY_SIZE=2048 Ngày nay, tiêu chuẩn là các khóa 2048-bit, mặc dù bạn cũng có thể sử dụng 4096-bit, an toàn hơn nhưng làm chậm quá trình đàm phán.
Nếu muốn, bạn cũng có thể đặt các giá trị khóa và certificate mặc định trong file này để không phải nhập chúng sau này.
 Vì shell mà  ta  đang sử dụng là tcsh , các dòng export cần được thay thế bằng setenv . Điều này được thực hiện với sed trước khi source . Di chuyển đến folder  easy-rsa của  ta  (bắt buộc).
cd /usr/local/etc/openvpn/easy-rsa/ Thay thế các dòng:
cat ./vars | sed -e 's/export /setenv /g' -e 's/=/ /g' | source /dev/stdin Vẫn từ folder  /usr/local/etc/openvpn/easy-rsa/ của  ta , trước tiên hãy làm sạch folder , sau đó xây dựng tổ chức phát hành certificate  (CA).
./clean-all ./build-ca Bạn sẽ được yêu cầu đặt các tùy chọn CA. Điền vào những thông tin chi tiết của bạn:
Country Name (2 letter code) [US]:GB State or Province Name (full name) [CA]:Somerset Locality Name (eg, city) [SanFrancisco]:Bath Organization Name (eg, company) [Fort-Funston]:Callum Organizational Unit Name (eg, section) [changeme]:VPN Common Name (eg, your name or your server's hostname) [changeme]:vpn.example.com Name [changeme]:Callum's VPN CA Email Address [mail@host.domain]:callum@example.com Bây giờ xây dựng khóa server :
./build-key-server server , hãy cài đặt các tùy chọn. Bạn không cần password hoặc tên công ty tùy chọn.
 Nhập y để ký và xác nhận khóa:
Country Name (2 letter code) [US]:GB State or Province Name (full name) [CA]:Somerset Locality Name (eg, city) [SanFrancisco]:Bath Organization Name (eg, company) [Fort-Funston]:Callum Organizational Unit Name (eg, section) [changeme]:VPN Common Name (eg, your name or your server's hostname) [server]:vpn.example.com Name [changeme]:Callum's VPN Server Email Address [mail@host.domain]:callum@example.com  Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: ENTER An optional company name []: ENTER  Certificate is to be certified until Feb  5 14:40:15 2025 GMT (3650 days) Sign the certificate? [y/n]: y  1 out of 1 certificate requests certified, commit? [y/n] y Write out database with 1 new entries Data Base Updated Cuối cùng, khóa Diffie-Hellman phải được tạo. Quá trình này có thể mất một chút thời gian tùy thuộc vào kích thước khóa:
./build-dh Bây giờ tất cả các khóa server và certificate đã được tạo, chúng sẽ được sao chép vào folder cấu hình OpenVPN của ta .
cd /usr/local/etc/openvpn/easy-rsa/keys/ cp dh*.pem ca.crt server.crt server.key /usr/local/etc/openvpn/ Bạn đã hoàn tất với các certificate server ! Bây giờ đến certificate khách hàng.
Bước 4 - Tạo certificate khách hàng
 Mỗi client  cũng  cần  một certificate  và khóa để xác thực và kết nối với VPN. Đảm bảo rằng bạn đang ở trong folder  /usr/local/etc/openvpn/easy-rsa/ .
cd /usr/local/etc/openvpn/easy-rsa/ Chạy lệnh sau, trong đó clientName là tên bạn muốn sử dụng cho certificate   ứng dụng client  cụ thể này.
./build-key clientName Bạn sẽ được yêu cầu nhập lại tên quốc gia, tên city , v.v. Quá trình này cũng giống như quá trình tạo khóa server . Đây được coi là thông tin của khách hàng nhưng không có thông tin nào thực sự quan trọng.
 Bạn không cần password  hoặc tên công ty. Nhập y để ký và  commit  certificate .
Lưu ý: Bạn nên sử dụng một certificate khác nhau cho từng client và điều này được thực thi bởi OpenVPN theo mặc định. Tuy nhiên, nếu được yêu cầu, điều này có thể bị tắt trong cấu hình OpenVPN (sẽ giải thích ở phần sau).
 Nếu bạn đã sử dụng kích thước khóa khác với 2048 bạn  cần  sửa đổi cấu hình OpenVPN để  trùng với  tên file  của kích thước khóa mà bạn đã sử dụng. Nếu bạn không nhớ, bạn có thể xem tên file  chính xác của file  dh bằng lệnh sau:
ls /usr/local/etc/openvpn/easy-rsa/keys/dh*.pem Chỉnh sửa server.conf :
nano /usr/local/etc/openvpn/server.conf Thay thế dòng dh dh2048.pem bằng:
dh dhSIZE.pem Nếu bạn đã làm theo đề xuất của ta cho khóa 2048-bit trước đó, bạn không phải thực hiện bất kỳ thay đổi nào.
Lặp lại phần này cho từng certificate ứng dụng client riêng biệt mà bạn muốn tạo.
Bước 5 - Cấu hình định tuyến NAT IPv4
 FreeBSD bao gồm natd như một phần của firewall  ipfw cho phép định tuyến NAT và  được dùng  cho OpenVPN. Để sử dụng điều này, hãy chỉnh sửa /etc/rc.conf :
nano /etc/rc.conf Thêm các nội dung này ở dưới cùng:
firewall_enable="YES" firewall_type="open"  gateway_enable="YES" natd_enable="YES" natd_interface="vtnet0" natd_flags="-dynamic -m" - firewall_enable- ipfwcần cho- natd
-  firewall_type="open"làm cho firewall cho phép lưu lượng truy cập như mặc định
-  gateway_enableđặtnet.inet.ip.forwardingthành1cho phép định tuyến IPv4 trên hệ thống
-  natd_enablebộ định tuyến NAT thực tế
-  natd_interfacelà giao diện bên ngoài hướng tới Internet;vtnet0được sử dụng cho DigitalOcean
-  natd_flagslàm cho NAT động và-mbảo toàn số cổng
 Bây giờ khởi động lại  server  của bạn để tải ipfw và natd :
reboot Đăng nhập lại. Sau khi khởi động lại, hãy nhớ chạy lại sudo tcsh để trở thành root nếu bạn chưa có.
Bước 6 - Cấu hình cấu hình định tuyến OpenVPN và DNS
 Theo mặc định, OpenVPN không được  cấu hình  để yêu cầu client  định tuyến lưu lượng truy cập Internet thông qua VPN.  Ta  sẽ đảm bảo nó định tuyến lưu lượng truy cập qua OpenVPN bằng cách bỏ ghi chú một số dòng trong /usr/local/etc/openvpn/server.conf :
nano /usr/local/etc/openvpn/server.conf Xác định vị trí và bỏ ghi chú ba dòng sau:
push "redirect-gateway def1 bypass-dhcp"  push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"  Server  DNS đặt trước dành cho OpenDNS nhưng bạn có thể đặt chúng thành bất kỳ DNS nào bạn thích (chẳng hạn như Google DNS với 8.8.8.8 và 8.8.4.4 ).
Cài đặt tùy chọn:
Bạn cũng có thể cho phép khách hàng giao tiếp trực tiếp với các IP của nhau bằng cách bỏ ghi chú:
client-to-client Nếu, như đã đề cập trước đó, bạn muốn sử dụng cùng một khóa và certificate cho nhiều client (hơi kém an toàn hơn), hãy bỏ comment này:
duplicate-cn Có thể bật và tắt tính năng nén với dòng này:
comp-lzo Mật mã của bạn có thể được đặt theo cách thủ công bằng cách bỏ ghi chú một trong các dòng sau:
cipher BF-CBC        # Blowfish (default) cipher AES-128-CBC   # AES cipher DES-EDE3-CBC  # Triple-DES Lưu ý: Bất kỳ mật mã nào bạn sử dụng cũng phải được xác định trong file cấu hình client mà ta sẽ tạo sau này.
 Các mật mã bổ sung cũng có sẵn, chẳng hạn như aes-256-cbc .
Bước 7 - Khởi động OpenVPN
 Cho phép OpenVPN tải khi khởi động và tải bằng lệnh service bằng cách thêm dòng sau vào /etc/rc.conf :
nano /etc/rc.conf Thêm các dòng này ở cuối file :
openvpn_enable="YES" openvpn_configfile="/usr/local/etc/openvpn/server.conf" Server OpenVPN hiện đã được cấu hình đầy đủ và sẽ tải khi khởi động.
Khởi động server theo cách thủ công với:
service openvpn start Sản lượng mong đợi:
add net 10.8.0.0: gateway 10.8.0.2 Server OpenVPN của bạn hiện đang chạy.
Bước 8 - Cấu hình file khách hàng
Trên server , ta sẽ tạo file cấu hình cho từng client .
Đầu tiên, tạo một folder để làm việc trong:
mkdir -p /usr/local/etc/openvpn/clients/clientName Đặt clientName là tên khách hàng mà  ta  đã đặt trước đó trong khi tạo certificate . (Không quan trọng chính xác cách bạn đặt nó như thế nào vì nó chỉ là một folder  đang hoạt động.)
Di chuyển đến folder mới:
cd /usr/local/etc/openvpn/clients/clientName/ Sao chép khóa ứng dụng và certificate  mà  ta  đã tạo bằng easy-rsa và file  client.conf mẫu. Đảm bảo rằng bạn thay thế clientName bằng tên bạn đã sử dụng trước đó cho các file  .key và .crt :
cp /usr/local/etc/openvpn/easy-rsa/keys/clientName.crt /usr/local/etc/openvpn/easy-rsa/keys/clientName.key ./ cp /usr/local/share/examples/openvpn/sample-config-files/client.conf ./client.conf cp /usr/local/etc/openvpn/ca.crt ./   , clientName là những gì  ta  đã sử dụng trước đó.
 Chỉnh sửa file  client.conf :
nano ./client.conf Cập nhật dòng remote để bao gồm địa chỉ IP của Server (có thể lấy được bằng ifconfig ) và số cổng; 1194 là mặc định:
remote your_server_ip 1194 Lưu ý: Nếu bạn đã sửa đổi cài đặt
cipherhoặccomp-lzocủa server , thì điều này phải được phản ánh trong fileclient.conf. Sử dụng các cài đặt tương tự bạn đã làm trước đó; ví dụ:cipher aes-256-cbc ;comp-lzoCài đặt này sử dụng mật mã
aes-256-cbcvà tắt tính năng nén.Nếu bạn đã thay đổi dòng
prototrong cấu hình server , thì điều này cũng cần được phản ánh trong client .Đảm bảo những dòng này trùng với những gì bạn đã đặt trước đó; nếu bạn không thay đổi bất kỳ điều gì ở phía server , đừng thay đổi chúng ở đây.
Bây giờ một chút về quản lý nhà; ta sẽ nhúng các certificate và khóa vào file cấu hình duy nhất. Điều này làm cho việc chuyển giao cho khách hàng cá nhân dễ dàng hơn. Ngoài ra, bạn có thể download file cấu hình và khóa và hai file certificate cho client riêng biệt.
 Trong cùng một file  client.conf , hãy  comment  về certificate  và tên file  khóa:
;ca ca.crt ;cert client.crt ;key client.key Lưu các thay đổi .
 Cuối cùng,  ta  cần nhúng các clientName .crt ca.crt , clientName .crt và clientName .key vào file  cấu hình. Bạn có thể  copy paste  nội dung bằng cat hoặc nano hoặc bất cứ thứ gì bạn thấy thoải mái nhất và các biến thích hợp cho OpenVPN hoặc bạn có thể sử dụng tập lệnh một dòng được hiển thị bên dưới.
 Chạy tập lệnh này và nhập clientName của bạn khi  được yêu cầu . Tập lệnh gắn certificate  và các file  khóa của bạn vào file  client.conf , với các tên biến và dòng mới thích hợp mà OpenVPN đang mong đợi:
echo "Enter clientName:" && set CLIENTNAME = $< && printf "\n<ca>\n" >> ./client.conf && cat ./ca.crt >> ./client.conf && printf "</ca>\n" >> ./client.conf && printf "\n<cert>" >> ./client.conf && grep -v '^ ' ./$CLIENTNAME.crt | grep -v 'Certificate' >> ./client.conf && printf "</cert>\n" >> ./client.conf && printf "\n<key>\n" >> ./client.conf && cat ./$CLIENTNAME.key >> ./client.conf && printf "</key>\n" >> ./client.conf Đảm bảo rằng bạn cuộn hết cỡ sang bên phải, vì đây là một lệnh dài.
 Hãy xem file  client.conf đã hoàn thành bằng nano hoặc cat . Bạn sẽ thấy khóa và certificate  được thêm vào file  ở dưới cùng.
 Bạn đã hoàn tất! Tất cả những gì cần làm bây giờ là phân phối file  client.conf cho client  của bạn. Hầu hết khách hàng thích phần mở rộng .ovpn thành .conf , vì vậy  bạn cần  đổi tên file  local  thành my_digitalocean_vpn.ovpn hoặc một cái gì đó tương tự.
Lặp lại phần này cho từng khách hàng. Sử dụng các certificate riêng biệt theo mặc định hoặc sử dụng cùng một certificate ứng dụng client trên mỗi ứng dụng client nếu bạn muốn.
Kết luận và cài đặt client
Đến đây bạn sẽ có một server OpenVPN đang hoạt động!
  Download  file  cấu hình  ứng dụng client  bạn đã tạo ở bước trước ( /usr/local/etc/openvpn/clients/ clientName /client.conf ) vào máy local  của bạn. Sử dụng một phương pháp an toàn để  download  file , chẳng hạn như SCP hoặc SFTP .
Cũng trên máy local của bạn, hãy cài đặt ứng dụng client OpenVPN. Tunnelblick hoạt động tốt trên Mac OS X và OpenVPN có ứng dụng client Windows.
 Đảm bảo rằng file  cấu hình client  của bạn được đặt tên như mong đợi; đây thường là tên như my_digitalocean_vpn.ovpn .
Bấm đúp vào file hoặc di chuyển nó vào folder mong đợi của khách hàng của bạn.
Khởi động ứng dụng client của bạn và kết nối với server OpenVPN thích hợp.
Để đảm bảo VPN của bạn đang hoạt động, hãy sử dụng trình kiểm tra địa chỉ IP chẳng hạn như http://www.whatismyip.com/ . IP của bạn được hiển thị phải trùng với IP của server OpenVPN của bạn.
Xin chúc mừng! Bạn đã kết nối với server OpenVPN mới của bạn .
Các tin liên quan
Cách chạy OpenVPN trong Docker Container trên Ubuntu 14.042015-02-02
Cách thiết lập server OpenVPN trên Ubuntu 14.04
2015-01-28
Cách cài đặt và cấu hình server truy cập OpenVPN trên CentOS 6.5
2014-04-04
Cách bảo mật lưu lượng truy cập giữa các VPS bằng OpenVPN
2013-09-26
Cách thiết lập và cấu hình server OpenVPN trên Debian 6
2013-05-03
Cách thiết lập và cấu hình server OpenVPN trên CentOS 6
2013-05-02
 

