1. Cài đặt OPENVPN trên CENTOS 8?
Chuẩn bị:
- Yêu cầu hướng dẫn
- Yêu cầu CentOSLinux8
- Quyền Root
Bước 1: Cập nhật hệ thống của bạn Chạy lệnh dnf hoặc lệnh yum để cài đặt các bản cập nhật bảo mật CentOS 8:
{vivek@centos8:~ }$ sudo dnf update
{vivek@centos8:~ }$ sudo yum update
{vivek@centos8:~ }$ sudo yum install tar wget
Bước 2: Tìm và ghi lại địa chỉ IPv4 hoặc IPv6 của máy chủ của bạn
Sử dụng lệnh ip như sau:
{vivek@centos8:~ }$ ip a
{vivek@centos8:~ }$ ip a show eth0
Chúng ta có thể thử lệnh dig / lệnh host sau đây để tìm ra địa chỉ IP công khai của bạn từ dòng lệnh Linux :
{vivek@centos8:~ }$ dig +short myip.opendns.com @resolver1.opendns.com
{vivek@centos8:~ }$ dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2 }'
172.105.120.136
Vui lòng ghi lại địa chỉ IP 172.105.120.136. Bạn cần thay thế cái này bằng IPv4 thực tế của mình.
Lưu ý về địa chỉ IPv4 và IPv6 của bạn
Hầu hết các máy chủ đám mây có hai loại địa chỉ IP:
- Địa chỉ IP tĩnh công cộng được gán trực tiếp cho hộp của bạn và được định tuyến từ Internet. Ví dụ: Linode, Digital Ocean và các dịch vụ khác cung cấp cho bạn địa chỉ IPv4/IPv6 công khai trực tiếp.
- Địa chỉ IP tĩnh riêng được gắn trực tiếp vào máy chủ của bạn và máy chủ của bạn đứng sau NAT với địa chỉ IP công cộng . Ví dụ: AWS EC2/Lightsail, Google Cloud và những dịch vụ khác cung cấp cho bạn loại địa chỉ IP công cộng NAT này.
Tập lệnh sẽ tự động phát hiện thiết lập mạng của bạn. Tất cả những gì bạn phải làm là cung cấp địa chỉ IPv4 hoặc IPv6 chính xác khi được yêu cầu. Do đó, chúng tôi đã sử dụng lệnh trên để xác định trước địa chỉ IP của mình.
Bước 3 – Tải xuống và chạy tập lệnh centos-8-vpn.sh
Tôi sẽ sử dụng lệnh wget : Đảm bảo rằng bạn đã thiết lập quyền bằng lệnh chmod: Người ta cũng có thể xem tập lệnh bằng trình soạn thảo văn bản như vim/vi :
{vivek@centos8:~ }$ wget https://raw.githubusercontent.com/Angristan/openvpn-install/master/openvpn-install.sh -O centos-8-vpn.sh
{vivek@centos8:~ }$ chmod +x centos-8-vpn.sh
{vivek@centos8:~ }$ vim centos-8-vpn.sh
Cài đặt máy chủ OpenVPN trên CentOS 8 Linux bằng Centos-8-vpn.sh
Bây giờ, tất cả những gì bạn phải làm là chạy tập lệnh shell trên Linux : Phiên mẫu từ máy chủ đám mây Linode của tôi với địa chỉ IPv4 công khai trực tiếp :
{vivek@centos8:~ }$ sudo ./centos-8-vpn.sh
Phiên mẫu từ AWS/Lightsail nơi máy chủ đám mây của tôi đứng sau NAT :
Cấu hình máy khách trên máy tính để bàn hoặc thiết bị di động
Khi hoàn tất cấu hình máy chủ VPN, chúng ta có thể tạo tệp cấu hình VPN máy tính để bàn/máy khách di động. Bạn sẽ được nhắc như sau:
Làm cách nào để bắt đầu/dừng/khởi động lại máy chủ OpenVPN trên CentOS 8?
#--- Stop the server ---#
{vivek@centos8:~ }$ sudo systemctl stop openvpn-server@server.service
#--- Start the server ---#
{vivek@centos8:~ }$ sudo systemctl start openvpn-server@server.service
#--- Restart the server ---#
{vivek@centos8:~ }$ sudo systemctl restart openvpn-server@server.service
#--- Get the server status ---#
{vivek@centos8:~ }$ sudo systemctl status openvpn-server@server.service
Bước 4 – Kết nối máy chủ OpenVPN bằng ứng dụng khách iOS/Android/Linux/MS-Windows
Trên máy chủ, bạn sẽ tìm thấy tệp cấu hình máy khách có tên ~/DesktopVPNClient.ovpn. Tất cả những gì bạn phải làm là sao chép tệp này vào máy tính để bàn cục bộ của mình bằng lệnh scp: Tiếp theo, cung cấp tệp này cho ứng dụng khách OpenVPN của bạn cho mục đích kết nối:
{vivek@centos8:~ }$ scp vivek@172.105.120.136:~/DesktopVPNClient.ovpn .
- Tải xuống ứng dụng khách Apple iOS từ Apple App store
- Lấy ứng dụng khách Android từ cửa hàng Google Play
- Máy khách Apple MacOS (OS X)
- Máy khách Microsoft Windows 8/10
Cấu hình máy khách máy tính để bàn OpenVPN Linux
Trước tiên, hãy cài đặt ứng dụng khách openvpn cho máy tính để bàn của bạn, nhập: Đối với Debian/Ubuntu Linux, hãy thử lệnh apt / lệnh apt-get : Tiếp theo, sao chép DesktopVPNClient.ovpn như sau: Kiểm tra kết nối từ CLI: Hệ thống máy tính để bàn Linux của chúng tôi sẽ tự động kết nối khi khởi động lại máy tính bằng tập lệnh/dịch vụ openvpn:
{vivek@centos8-client:~ }$ sudo yum install openvpn
{vivek@debian-client:~ }$ sudo apt install openvpn
{vivek@centos8-client:~ }$ sudo cp DesktopVPNClient.ovpn /etc/openvpn/client.conf
{vivek@centos8-client:~ }$ sudo openvpn --client --config /etc/openvpn/desktop.conf
{vivek@centos8-client:~ }$ sudo systemctl start openvpn@client
Bước 5 – Xác minh/kiểm tra kết nối
Thực hiện các lệnh sau sau khi kết nối với máy chủ OpenVPN từ máy khách máy tính để bàn Linux của bạn:
#Ping to the OpenVPN server gateway
{vivek@centos8-client:~ }$ ping 10.8.0.1
#Make sure routing setup working
{vivek@centos8-client:~ }$ ip route
#Must return public IP address of OpenVPN server
{vivek@centos8-client:~ }$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
Bước 6 – Cách thêm hoặc xóa ứng dụng khách OpenVPN
Đăng nhập vào máy chủ Linux CentOS 8 của bạn và chạy lại tập lệnh: Bạn sẽ thấy tùy chọn như sau:
{vivek@centos8:~ }$ sudo ./centos-8-vpn.sh
Chào mừng bạn đến với OpenVPN-cài đặt! Kho git có sẵn tại: https://github.com/angristan/openvpn-install Có vẻ như OpenVPN đã được cài đặt. Bạn muốn làm gì? 1) Thêm người dùng mới 2) Thu hồi người dùng hiện tại 3) Xóa OpenVPN 4) Thoát Chọn một tùy chọn [1-4]:
Chọn một tùy chọn theo nhu cầu của bạn.
Lưu ý về sự cố xử lý sự cố máy chủ và máy khách OpenVPN
Kiểm tra máy chủ OpenVPN để tìm lỗi bằng lệnh journalctl{vivek@centos8:~ }$ journalctl --identifier openvpn
Quy tắc tường lửa có được thiết lập chính xác trên máy chủ của bạn không? Sử dụng lệnh cat để xem các quy tắc: Đây là các quy tắc NAT:
{vivek@centos8:~ }$ sudo cat /etc/iptables/add-openvpn-rules.sh
#!/bin/sh iptables -t nat -I POSTROUTING 1 -s 10.8.0.0 / 24 -o eth0 -j MASQUERADE iptables -I INPUT 1 -i tun0 -j CHẤP NHẬN iptables -I FORWARD 1 -i eth0 -o tun0 -j CHẤP NHẬN iptables -I FORWARD 1 -i tun0 -o eth0 -j CHẤP NHẬN iptables -I INPUT 1 -i eth0 -p udp --dport 1194 -j CHẤP NHẬN thoát 0
Đây là tập lệnh iptables mẫu để xóa các quy tắc OpenVPN: Kết quả:
{vivek@centos8:~ }$ sudo cat /etc/iptables/rm-openvpn-rules.sh
#!/ bin / sh iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables -D INPUT -i tun0 -j CHẤP NHẬN iptables -D FORWARD -i eth0 -o tun0 -j CHẤP NHẬN iptables -D FORWARD -i tun0 -o eth0 -j CHẤP NHẬN iptables -D INPUT -i eth0 -p udp --dport 1194 -j CHẤP NHẬN
Một tùy chọn khác là chạy lệnh iptables và lệnh lệnh sysctl để xác minh thiết lập quy tắc NAT trên máy chủ của bạn:
{vivek@centos8:~ }$ sudo iptables -t nat -L -n -v
{vivek@centos8:~ }$ sysctl net.ipv4.ip_forward
Chèn các quy tắc nếu không được chèn từ /etc/rc.local Máy chủ OpenVPN có đang chạy và cổng đang mở không? Sử dụng lệnh ss hoặc lệnh netstat và lệnh pidof / lệnh ps cùng với lệnh grep như sau:
{vivek@centos8:~ }$ sudo sh /etc/iptables/add-openvpn-rules.sh
{vivek@centos8:~ }$ sudo sysctl -w net.ipv4.ip_forward=1
{vivek@centos8:~ }$ netstat -tulpn | grep :1194 #1194 is the openvpn server port
{vivek@centos8:~ }$ ss -tulpn | grep :1194 #1194 is the openvpn server port
{vivek@centos8:~ }$ ps aux | grep openvpn #Is the openvpn server running?
{vivek@centos8:~ }$ ps -C openvpn #Is the openvpn server running?
{vivek@centos8:~ }$ pidof openvpn #Find the openvpn server PID
Nếu không chạy, hãy khởi động lại máy chủ OpenVPN: Tìm lỗi: Tương tự, hãy đảm bảo dịch vụ openvpn-iptables cũng đang chạy và nếu quy tắc tải không chạy: Tường lửa của tôi đang chạy:
{vivek@centos8:~ }$ sudo systemctl restart openvpn-server@server.service
{vivek@centos8:~ }$ sudo systemctl status openvpn-server@server.service
{vivek@centos8:~ }$ sudo systemctl status iptables-openvpn.service
{vivek@centos8:~ }$ sudo systemctl restart iptables-openvpn.service
{vivek@centos8:~ }$ sudo systemctl status iptables-openvpn.service
● iptables-openvpn.service - quy tắc iptables cho OpenVPN Đã tải: đã tải (/etc/systemd/system/iptables-openvpn.service; đã bật; giá trị đặt trước của nhà cung cấp: đã tắt) Hoạt động: hoạt động (đã thoát) kể từ Chủ Nhật 2020-12-27 10:18:17 UTC; 21 phút trước PID chính: 654 (mã=đã thoát, trạng thái=0/THÀNH CÔNG) Nhiệm vụ: 0 (giới hạn: 4947) Bộ nhớ: 0B Nhóm C: /system.slice/iptables-openvpn.service Ngày 27 tháng 12 10:18:16 centos-8-nixcraft systemd[1]: Bắt đầu quy tắc iptables cho OpenVPN... Ngày 27 tháng 12 10:18:17 centos-8-nixcraft systemd[1]: Đã bắt đầu quy tắc iptables cho OpenVPN.
Máy khách để bàn Linux có thể kết nối với máy chủ OpenVPN không? Trước tiên, bạn cần chạy một thử nghiệm đơn giản để xem cổng máy chủ OpenVPN (UDP 1194) có chấp nhận kết nối bằng lệnh nc hoặc lệnh nmap hay không : Đầu ra sau cho biết cổng UDP 1194 đang mở:
{vivek@centos8:~ }$ sudo nmap -sU -p 1194 172.105.120.136
Bắt đầu từ Nmap 7.80 ( https://nmap.org ) lúc 27-12-2020 16:07 IST Báo cáo quét Nmap cho lixyz-328.members.linode.com (172.105.120.136) Máy chủ đang hoạt động (độ trễ 0,32 giây). DỊCH VỤ NHÀ NƯỚC CẢNG 1194/udp mở |openvpn đã lọc Nmap đã hoàn thành: 1 địa chỉ IP (1 máy chủ lưu trữ) được quét trong 3,68 giây
Nếu không được kết nối, điều đó có nghĩa là tường lửa máy tính để bàn Linux hoặc bộ định tuyến tại nhà/văn phòng của bạn đang chặn quyền truy cập vào máy chủ. Đảm bảo cả máy khách và máy chủ sử dụng cùng một giao thức và cổng. Ví dụ: cổng UDP 1194.
Lưu ý về FirewallD trên CentOS 8
Theo mặc định, FirewallD sẽ chặn quyền truy cập vào UDP/1194 và tập lệnh trên không tương thích với các quy tắc iptables trên máy chủ OpenVPN của bạn. Trước tiên, hãy tìm hiểu xem tường lửa có hoạt động hay không trên máy chủ, hãy chạy:
{vivek@centos8:~ }$ sudo systemctl is-enabled firewalld.service
enabled
## [-- eth0 is server interface with IPv4/IPv6 --] ##
## [-- tun0 is OpenVPN interface ##
## [-- 10.8.0.0/24 sub/net for OpenVPN --] ##
## [-- ADJUST VALUES AS PER YOUR SET UP WHEN TYPING THE FOLLOWING COMMANDS --] ##
{vivek@centos8:~ }$ sudo firewall-cmd --get-active-zones
{vivek@centos8:~ }$ sudo firewall-cmd --zone=trusted --add-interface=tun0
{vivek@centos8:~ }$ sudo firewall-cmd --permanent --zone=trusted --add-interface=tun0
{vivek@centos8:~ }$ sudo firewall-cmd --permanent --add-service openvpn
{vivek@centos8:~ }$ sudo firewall-cmd --permanent --zone=trusted --add-service openvpn
{vivek@centos8:~ }$ sudo firewall-cmd --reload
{vivek@centos8:~ }$ sudo firewall-cmd --list-services --zone=trusted
{vivek@centos8:~ }$ sudo firewall-cmd --add-masquerade
{vivek@centos8:~ }$ sudo firewall-cmd --add-masquerade --permanent
{vivek@centos8:~ }$ sudo firewall-cmd --query-masquerade
# note eth0 is where servers public ipv4/ipv6 assinged #
{vivek@centos8:~ }$ sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Leave a Reply