NỘI DUNG
Kết thúc Phần 4, bạn đã hoàn thành phần lớn các nội dung công việc cấu hình trên VPN Server. Trong kỳ này, tôi sẽ trình bày nốt các nội dung cấu hình còn lại bao gồm thiết lập Packet forwarding, Firewall và sau đó khởi động cho con VPN Server bắt đầu chạy.
#1 Thiết lập packet forwarding
Để thực hiện thiết lập này, bạn sẽ cần thay đổi nội dung trong file “sysctl.conf”. Do vậy, đầu tiên, sau khi ssh vào bên trong con VM Instance, bạn cần mở file “sysctl.conf” lên với dòng lệnh:
sudo nano /etc/sysctl.conf
Dùng phím mũi tên, bạn tìm dòng liên quan đến “IP forwarding” và bỏ dấu “#” ở đầu dòng để kích hoạt dòng này:
net.ipv4.ip_forward=1
Sau đó bạn lưu thay đổi và thoát ra với với tổ hợp phím “Crtl + X”, “Y” và “Enter” rồi load lại file cấu hình này với dòng lệnh:
sudo sysctl -p
Góc trợ giúp:
– “sysctl.conf” tại thư mục “/etc” cung cấp nhiều tùy chọn thông số cấu hình cho Linux Kernel nhưng với mục tiêu tạo VPN Server, bạn sẽ chỉ cần tập trung vào nội dung nói trên là chuẩn cmnr
– Tùy chọn -p
hay --load
được sử dụng để sysctl đọc thiết lập từ file chỉ định (không chỉ định thì nó sẽ triển với file “sysctl.conf”)
#2 Cấu hình Firewall
#2.1 Kiểm tra Network Interface
Kế tiếp, bạn cần làm cập nhật thiết lập Firewall để để VPN hoạt động. Trước khi tiến hành thiết lập bạn cần xác định xem Network Interface mặc định nào đang hoạt động với dòng lệnh:
ip route | grep default
Góc trợ giúp:
– “ip route” sẽ hiển thị cho bạn danh sách các interface đang sử dụng cho việc định tuyến
– “grep” có chức năng tìm kiếm theo từ khóa chỉ định (trong dòng lệnh trên bạn tìm từ khóa “default” – ý là bạn muốn tìm cái Network Interface mặc định. Lưu ý: thằng “|” (pipe) tôi nói ở Phần 4 rồi, bạn không nhớ thì quay lại nhé.
Với trường hợp của tôi thì thì Network Interface mặc định sẽ là “ens4” (bạn lưu ý kiểm lại thông tin của tương ứng và cập nhật cho phù hợp nếu cần)
#2.2 Cấu hình Firewall
Sau đó, bạn tiến hành mở file để cập nhật cấu hình Firewall với dòng lệnh
sudo nano /etc/ufw/before.rules
Trong file này, bạn tìm đến vị trí bên trên dòng “Don’t delete these required lines…” và bổ sung đoạn sau:
# OPENVPN
# NAT Table
*nat
:POSTROUTING ACCEPT [0:0]
# OpenVPN client traffic
-A POSTROUTING -s 10.8.0.0/8 -o ens4 -j MASQUERADE
COMMIT
# OPENVPN
Lưu ý: Đoạn này bạn nên copy và paste với “Ctrl+V” nhé vì hơi dài nên dễ gõ nhầm
Bạn lưu thay đổi và thoát ra để tiếp tục chuyển sang cấu hình Forward Policy bằng dòng lệnh:
sudo nano /etc/default/ufw
Bạn tìm đến nội dung “DEFAULT_FORWARD_POLICY” và đổi “DROP” thành “ACCEPT” như sau:
Hiển nhiên, bạn cần lưu trước khi thoát khỏi file cấu hình này.
Và cuối cùng nhưng cũng rất quan trọng đó là bổ sung dòng rule cho phép VPN hoạt động ở port 443 với TCP protocol (bạn xem lại Phần 4 nếu không biết cái này ở đâu ra nhé)
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
Lưu ý quan trọng: có thêm cái dòng “sudo ufw allow 22/tcp” là để cho phép bạn vẫn có thể ssh vào VM Instance qua port mặc định 22 sau khi bạn kích hoạt Firewall và thoát ra ngoài VM. Nếu quên cái này thì bạn có thể phải dùng đến các thủ thuật như “startup script” để tắt Firewall từ bên ngoài VM. Vì mục tiêu chính là dựng VPN Server nên tôi sẽ không nói thêm về tình huống “khóa cửa xong mới biết quên cầm chìa” này. Tuy nhiên, nếu vì dòng đời xô đẩy mà bạn lỡ lâm vào hoàn cảnh éo le đó thì có thể comment để tôi nói chi tiết thêm.
Trước khi kết thúc mục này, bạn cần bảo đảm Firewall đã hoạt động với dòng lệnh
sudo ufw enable
#3. Chạy OpenVPN Server
Để chạy con Open VPN Server, bạn dùng dòng lệnh
sudo systemctl start openvpn@server
Sau đó, bạn kiểm tra trạng thái hoạt động với:
sudo systemctl status openvpn@server
Nếu thấy kết quả như sau là ngon (xem chán rồi thì bạn bấm “q” để thoát ra)
Và cuối cùng link cái OpenVPN này vào quá trình khởi động với:
sudo systemctl enable openvpn@server
OK, nếu bạn đã đến được đây mà mọi chuyện vẫn êm đẹp thì xem như đã xong được cỡ 80% rồi đây. Trong kỳ tới (tôi hy vọng sẽ là kỳ cuối), tôi sẽ chuyển sang nội dung thiết lập cho Client trước khi có thể bắt đầu khai thác con hàng VPN Server.
chào bạn mình làm theo hướng dẫn mà tới phần start openvpn@server thì trong status báo lỗi như sau:
● openvpn@server.service – OpenVPN connection to server
Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2021-02-23 07:55:59 UTC; 41s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Process: 3920 ExecStart=/usr/sbin/openvpn –daemon ovpn-%i –status /run/openvpn/%i.status 10 –cd /etc/openvpn –script-security 2 –config /etc/openvpn/%i.conf –writepi
Feb 23 07:55:59 tuanlinh systemd[1]: Starting OpenVPN connection to server…
Feb 23 07:55:59 tuanlinh ovpn-server[3920]: Options error: –tls-auth fails with ‘ta.key’: No such file or directory
Feb 23 07:55:59 tuanlinh ovpn-server[3920]: Options error: Please correct these errors.
Feb 23 07:55:59 tuanlinh ovpn-server[3920]: Use –help for more information.
Feb 23 07:55:59 tuanlinh systemd[1]: openvpn@server.service: Control process exited, code=exited status=1
Feb 23 07:55:59 tuanlinh systemd[1]: Failed to start OpenVPN connection to server.
Feb 23 07:55:59 tuanlinh systemd[1]: openvpn@server.service: Unit entered failed state.
Feb 23 07:55:59 tuanlinh systemd[1]: openvpn@server.service: Failed with result ‘exit-code’.
lines 1-16/16 (END)
Bạn giúp mình với mình cám ơn. Bài viết rất bổ ích ạ!
Xin lỗi bạn. Tôi bỏ sót không thấy comment của bạn. Không biết hiện giờ bạn đã đã xử lý được lỗi chưa? Nếu chưa thì nhờ bạn phản hồi để tôi xem có thể giúp được gì hay không.
Cám ơn những chia sẻ rất thực tế của anh. Đang mong chờ bài kế tiếp !
Cám ơn !
Rất vui vì bài viết có thể giúp ích cho bạn.
@tuanthu:~/openvpn-ca/keys$ sudo systemctl status openvpn@tuanthu
● openvpn@tuanthu.service – OpenVPN connection to tuanthu
Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Sun 2021-12-05 14:12:28 UTC; 2s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Process: 9260 ExecStart=/usr/sbin/openvpn –daemon ovpn-tuanthu –status /run/openvpn/tuanthu.status 10 –cd /etc/
Main PID: 9260 (code=exited, status=1/FAILURE)
Dec 05 14:12:28 tuanthu systemd[1]: openvpn@tuanthu.service: Main process exited, code=exited, status=1/FAILURE
Dec 05 14:12:28 tuanthu systemd[1]: openvpn@tuanthu.service: Failed with result ‘exit-code’.
Dec 05 14:12:28 tuanthu systemd[1]: Failed to start OpenVPN connection to tuanthu.
Khởi động Open VPN server và lỗi như này. Bác cho xin hướng giải quyết giúm với.
Cảm ơn bác
Xin lỗi bạn vì bận việc quá nên tôi không kiểm tra comment thường xuyên. Không biết bạn đã khắc phục được chưa hay vẫn còn bị lỗi trên
trong lúc mình làm thì gặp lỗi này:
Job for openvpn@server.service failed because the control process exited with error code.
See “systemctl status openvpn@server.service” and “journalctl -xe” for details.
sau đó check “journalctl -xe” thì ra lỗi này:
Options error: –explicit-exit-notify can only be used with –proto udp
Ai gặp thì quay trở lại file /etc/openvpn/server.conf comment cái dòng này đi là đc:
;explicit-exit-notify 1