OpenVPN là phần mềm mã nguồn mở có thể được sử dụng để truy cập internet an toàn khi kết nối với mạng không đáng tin cậy. OpenVPN cho phép bạn giữ dữ liệu trực tuyến của mình an toàn bằng cách chuyển chúng qua các máy chủ được mã hóa. OpenVPN sử dụng SSL/TLS để trao đổi khóa và có khả năng vượt qua các trình biên dịch địa chỉ mạng. Có nhiều phần mềm VPN có sẵn trên thị trường nhưng tất cả đều tốn kém và/hoặc khó thiết lập và quản lý. Trong khi OpenVPN là một dịch vụ miễn phí, dễ thiết lập, cấu hình và quản lý.
Trong hướng dẫn này, chúng tôi sẽ giải thích cách thiết lập máy chủ OpenVPN trên máy chủ Debian 10.
Thay đổi dòng sau:
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, áp dụng các thiết lập mới bằng cách chạy lệnh sau:
Tiếp theo, cài đặt gói OpenVPN chỉ bằng cách chạy lệnh sau:
Sau khi quá trình cài đặt hoàn tất, bạn có thể tiến hành bước tiếp theo.
Tiếp theo, đổi thư mục thành easy-rsa và đổi tên tệp vars.example:
Tiếp theo, mở tệp vars:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi tạo PKI bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Tiếp theo, xây dựng CA mà không cần mật khẩu như hiển thị bên dưới:
Bạn sẽ thấy đầu ra sau:
Tiếp theo, tạo khóa máy chủ bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Tiếp theo, ký chứng chỉ máy chủ bằng lệnh sau:
Bạn sẽ thấy kết quả sau:
Tiếp theo, xây dựng trao đổi khóa Diffie-Hellman bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Tiếp theo, tạo chữ ký HMAC bằng lệnh sau:
Cuối cùng, sao chép toàn bộ chứng chỉ và khóa vào thư mục /etc/openvpn:
Bạn nên xem kết quả sau:
Tiếp theo, hãy ký chứng chỉ Client bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Tiếp theo, sao chép tất cả chứng chỉ và khóa của máy khách vào thư mục /etc/openvpn/client/:
Thêm nội dung sau:
Lưu và đóng tệp. Sau đó, khởi động dịch vụ OpenVPN bằng lệnh sau:
Tiếp theo, xác minh máy chủ OpenVPN bằng lệnh sau:
Đầu ra:
Sau khi cài đặt, tạo tệp cấu hình mới cho OpenVPN Client:
Xác định địa chỉ IP máy chủ và tệp chứng chỉ máy khách của bạn như hiển thị bên dưới:
Lưu và đóng tệp. Sau đó, sao chép toàn bộ chứng chỉ máy khách và tệp khóa từ máy chủ OpenVPN sang hệ thống máy khách OpenVPN bằng lệnh sau:
Tiếp theo, khởi động dịch vụ máy khách OpenVPN bằng lệnh sau:
Bây giờ, bạn có thể thấy địa chỉ IP mới được máy chủ OpenVPN chỉ định bằng lệnh sau:
Bạn sẽ thấy kết quả đầu ra sau:
Tiếp theo, hãy đến hệ thống máy chủ OpenVPN và kiểm tra nhật ký OpenVPN với thông tin sau lệnh:
Bạn sẽ nhận được kết quả sau:
Xin chúc mừng! bạn đã cài đặt và cấu hình thành công máy chủ và máy khách OpenVPN trên Debian 10.
Trong hướng dẫn này, chúng tôi sẽ giải thích cách thiết lập máy chủ OpenVPN trên máy chủ Debian 10.
Yêu cầu
- Hai máy chủ chạy Debian 10.
- Một địa chỉ IP tĩnh 192.168.0.103 được cấu hình trên máy chủ VPN và 192.168.0.102 được cấu hình trên máy khách VPN.
- Một mật khẩu gốc được cấu hình trên cả hai máy chủ.
Cài đặt OpenVPN
Trước tiên, bạn sẽ cần bật chuyển tiếp IP để chuyển tiếp các gói tin mạng đúng cách. Bạn có thể thực hiện việc này bằng cách chỉnh sửa tệp /etc/sysctl.conf:
Mã:
nano /etc/sysctl.conf
Mã:
net.ipv4.ip_forward=1
Mã:
sysctl -p
Mã:
apt-get install openvpn -y
Tạo chứng chỉ và khóa máy chủ
Đầu tiên, bạn sẽ cần sao chép thư mục EasyRSA vào /etc/openvpn/. Bạn có thể thực hiện bằng lệnh sau:
Mã:
cp -r /usr/share/easy-rsa /etc/openvpn/
Mã:
cd /etc/openvpn/easy-rsa
mv vars.example vars
Mã:
nano vars
Mã:
export KEY_COUNTRY="INDIA"export KEY_PROVINCE="CA"export KEY_CITY="Junagadh"export KEY_ORG="Howtoforge"export KEY_EMAIL="[emailprotected]"export KEY_OU="OpenVPN"
Mã:
./easyrsa init-pki
Mã:
Lưu ý: sử dụng cấu hình Easy-RSA từ: ./varsinit-pki hoàn tất; bây giờ bạn có thể tạo CA hoặc yêu cầu.Thư mục PKI mới tạo của bạn là: /etc/openvpn/easy-rsa/pki
Mã:
./easyrsa build-ca nopass
Mã:
Lưu ý: sử dụng cấu hình Easy-RSA từ: ./varsSử dụng SSL: openssl OpenSSL 1.1.1c 28 tháng 5 năm 2019Tạo khóa riêng RSA, môđun dài 2048 bit (2 số nguyên tố)................................++++..............++++++e là 65537 (0x010001)Không thể tải /etc/openvpn/easy-rsa/pki/.rnd vào RNG140449484268672:error:2406F079:random number generator:RAND_load_file:Cannot mở tệp:../crypto/rand/randfile.c:98:Filename=/etc/openvpn/easy-rsa/pki/.rndBạn sắp được yêu cầu nhập thông tin sẽ được đưa vàoyêu cầu chứng chỉ của bạn.Những gì bạn sắp nhập được gọi là Tên phân biệt hoặc DN.Có khá nhiều trường nhưng bạn có thể để trống một số trườngĐối với một số trường sẽ có giá trị mặc định,Nếu bạn nhập '.', trường đó sẽ được để trống.-----Tên chung (ví dụ: tên người dùng, máy chủ hoặc máy chủ của bạn) [Easy-RSA CA]:máy chủViệc tạo CA đã hoàn tất và bây giờ bạn có thể nhập và ký các yêu cầu chứng chỉ.Tệp chứng chỉ CA mới của bạn để xuất bản nằm tại:/etc/openvpn/easy-rsa/pki/ca.crt
Mã:
./easyrsa gen-req server nopass
Mã:
Lưu ý: sử dụng cấu hình Easy-RSA từ: ./varsSử dụng SSL: openssl OpenSSL 1.1.1c Ngày 28 tháng 5 năm 2019Tạo khóa riêng RSA...++++++................................................................................................................++++++ghi khóa riêng mới vào '/etc/openvpn/easy-rsa/pki/private/server.key.uQ7rqU8ryK'-----Bạn sắp được yêu cầu nhập thông tin sẽ được đưa vàoyêu cầu chứng chỉ của bạn.Những gì bạn sắp nhập được gọi là Tên phân biệt hoặc DN.Có khá nhiều trường nhưng bạn có thể để trống một số trườngĐối với một số trường sẽ có giá trị mặc định,Nếu bạn nhập '.', trường sẽ được để trống.-----Tên chung (ví dụ: tên người dùng, máy chủ hoặc máy chủ của bạn) [máy chủ]:Yêu cầu cặp khóa và chứng chỉ đã hoàn tất. Các tệp của bạn là:req: /etc/openvpn/easy-rsa/pki/reqs/server.reqkey: /etc/openvpn/easy-rsa/pki/private/server.key
Mã:
./easyrsa sign-req server server
Mã:
Lưu ý: sử dụng cấu hình Easy-RSA từ: ./varsSử dụng SSL: openssl OpenSSL 1.1.1c 28 tháng 5 năm 2019Bạn sắp ký chứng chỉ sau.Vui lòng kiểm tra các chi tiết được hiển thị bên dưới để biết độ chính xác. Lưu ý rằng yêu cầu nàychưa được xác minh bằng mật mã. Vui lòng đảm bảo rằng yêu cầu này đến từ mộtnguồn đáng tin cậy hoặc bạn đã xác minh tổng kiểm tra yêu cầu với người gửi.Chủ đề yêu cầu, được ký dưới dạng chứng chỉ máy chủ trong 1080 ngày:subject= commonName = serverNhập từ 'yes' để tiếp tục hoặc bất kỳ đầu vào nào khác để hủy. Xác nhận chi tiết yêu cầu: cóSử dụng cấu hình từ /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnfKiểm tra xem yêu cầu có khớp với chữ ký khôngChữ ký okTên phân biệt của Chủ thể như saucommonName :ASN.1 12:'server'Chứng chỉ sẽ được chứng nhận cho đến ngày 5 tháng 9 lúc 15:43:29 2022 GMT (1080 ngày)Ghi ra cơ sở dữ liệu với 1 mục nhập mớiCơ sở dữ liệu đã cập nhậtChứng chỉ đã tạo tại: /etc/openvpn/easy-rsa/pki/issued/server.crt
Mã:
./easyrsa gen-dh
Mã:
Lưu ý: sử dụng cấu hình Easy-RSA từ: ./varsSử dụng SSL: openssl OpenSSL 1.1.1c 28 tháng 5 năm 2019Tạo tham số DH, số nguyên tố an toàn dài 2048 bit, trình tạo 2Việc này sẽ mất nhiều thời gian thời gian...................+................................................+................................................................................................................................................................................................................................+.......+................................................................................................+................................................+.................................................+................................................+.................................................................................+.................................................................................................+.................................................................................................+.................................................................................................+.................................................................................................+.................................................................................+...........................................................................................................+.................................+...........................................+.................................................................................................................................+...........................................+.................................................................................................................................+...........................................+.................................................................................................................................................+...........................................................................................................................................+...........................................................................................................................................+.................................................................................................................+.................................................................................................................+.................................................................................................................+.................................................................................................................+.................................................................................................................+.................................................................................................................+.................................................................................................................................+.................................................................................................................................+.................................................................................................................................+.................................................................................................................................+.................................................................................................................................+.................................................................................................................................+.................................................................................................................................+................................................................................................................................. ...................................................................................................................+...........+.................+.....+..........................................................................................+..........................................................+............+......................................+................................................................................................................................................................................................................................................................................................................................+................................................................+................................................................................+............................................+............................................................................................................................................................................................................+............................+......................................................+............+......................................................+......................+................................+....................................... ......................+................................................................................................................................................+............................................................................+.................................+.................................................................................................+............................................+......................................................+......................................+......................................................................................................................................................................................................+............................................................................................................+............................................................................................................+............................+......................................................................................................................................................................+............................................................................................+................................................++*++*++*++*DH tham số có kích thước 2048 được tạo tại /etc/openvpn/easy-rsa/pki/dh.pem
Mã:
openvpn --genkey --secret ta.key
Mã:
cp ta.key /etc/openvpn/
cp pki/ca.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/dh.pem /etc/openvpn/
Tạo chứng chỉ và khóa máy khách
Tiếp theo, tạo chứng chỉ máy khách bằng lệnh sau:
Mã:
./easyrsa gen-req client nopass
Mã:
Lưu ý: sử dụng cấu hình Easy-RSA từ: ./varsSử dụng SSL: openssl OpenSSL 1.1.1c 28 tháng 5 năm 2019Tạo khóa riêng RSA................................................++++++...............++++++ghi khóa riêng mới vào '/etc/openvpn/easy-rsa/pki/private/client.key.wU45j6E0Dt'-----Bạn sắp được yêu cầu nhập thông tin sẽ được đưa vàoyêu cầu cấp chứng chỉ của bạn.Những gì bạn sắp nhập được gọi là Tên phân biệt hoặc DN.Có khá nhiều trường nhưng bạn có thể để trống một số trườngĐối với một số trường sẽ có giá trị mặc định,Nếu bạn nhập '.', trường đó sẽ được để trống.-----Tên chung (ví dụ: tên người dùng, máy chủ hoặc máy chủ của bạn) [máy khách]:Yêu cầu cặp khóa và chứng chỉ đã hoàn tất. Các tệp của bạn là:req: /etc/openvpn/easy-rsa/pki/reqs/client.reqkey: /etc/openvpn/easy-rsa/pki/private/client.key
Mã:
./easyrsa sign-req client client
Mã:
Lưu ý: sử dụng cấu hình Easy-RSA từ: ./varsSử dụng SSL: openssl OpenSSL 1.1.1c Ngày 28 tháng 5 năm 2019Bạn sắp ký chứng chỉ sau.Vui lòng kiểm tra các chi tiết được hiển thị bên dưới để biết độ chính xác. Lưu ý rằng yêu cầu nàychưa được xác minh bằng mật mã. Vui lòng đảm bảo rằng yêu cầu này đến từ mộtnguồn đáng tin cậy hoặc bạn đã xác minh tổng kiểm tra yêu cầu với người gửi.Yêu cầu chủ đề, để được ký dưới dạng chứng chỉ máy khách trong 1080 ngày:subject= commonName = máy kháchNhập từ 'có' để tiếp tục hoặc bất kỳ mục nhập nào khác để hủy. Xác nhận chi tiết yêu cầu: cóSử dụng cấu hình từ /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnfNhập cụm mật khẩu cho /etc/openvpn/easy-rsa/pki/private/ca.key:Kiểm tra xem yêu cầu có khớp với chữ ký khôngChữ ký okTên phân biệt của Chủ thể như saucommonName :ASN.1 12:'client'Chứng chỉ sẽ được chứng nhận cho đến ngày 5 tháng 9 lúc 12:28:25 2022 GMT (1080 ngày)Ghi ra cơ sở dữ liệu với 1 mục nhập mớiCơ sở dữ liệu đã cập nhậtChứng chỉ được tạo tại: /etc/openvpn/easy-rsa/pki/issued/client.crt
Mã:
cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client.crt /etc/openvpn/client/
cp pki/private/client.key /etc/openvpn/client/
Cấu hình máy chủ OpenVPN
Tất cả chứng chỉ và khóa cần thiết cho máy chủ và máy khách hiện đã được tạo. Tiếp theo, bạn sẽ cần tạo tệp cấu hình OpenVPN. Bạn có thể tạo nó bằng lệnh sau:
Mã:
nano /etc/openvpn/server.conf
Mã:
port 1194proto udpdev tunca ca.crtcert server.crtkey server.key # Tệp này phải được giữ bí mậtdh dh.pemserver 10.8.0.0 255.255.255.0push "redirect-gateway def1 bypass-dhcp"push "dhcp-option DNS 208.67.222.222"push "dhcp-option DNS 208.67.220.220"keepalive 10 120tls-auth ta.key 0 # Tệp này là bí mậtcipher AES-256-CBCuser nobodygroup nogrouppersist-keypersist-tunstatus /var/log/openvpn/openvpn-status.loglog /var/log/openvpn/openvpn.loglog-append /var/log/openvpn/openvpn.logverb 3explicit-exit-notify 1
Mã:
systemctl start openvpn@server
Mã:
systemctl status openvpn@server
Mã:
? [emailprotected] - Kết nối OpenVPN tới máy chủ Đã tải: đã tải (/lib/systemd/system/[emailprotected]; đã tắt; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ bảy 2019-09-21 08:46:47 EDT; 6 giây trước Tài liệu: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO PID chính: 5040 (openvpn) Trạng thái: "Đã hoàn tất trình tự khởi tạo" Nhiệm vụ: 1 (giới hạn: 1138) Bộ nhớ: 1,7M CGroup: /system.slice/system-openvpn.slice/[emailprotected] ??5040 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --config /etc/openvpn/server.21/09 08:46:47 debian systemd[1]: Đang bắt đầu kết nối OpenVPN tới máy chủ...21/09 08:46:47 debian systemd[1]: Đã bắt đầu kết nối OpenVPN tới máy chủ.
Cài đặt và cấu hình OpenVPN Client
Tiếp theo, đăng nhập vào hệ thống OpenVPN client và cài đặt gói OpenVPN bằng lệnh sau:
Mã:
apt-get install openvpn -y
Mã:
nano /etc/openvpn/client.conf
Mã:
clientdev tunproto udpremote 192.168.0.103 1194resolv-retry infinitenobinduser nobodygroup nogrouppersist-keypersist-tunca ca.crtcert client.crtkey client.keyremote-cert-tls servertls-auth ta.key 1cipher AES-256-CBCđộng từ 3
Mã:
scp [emailprotected]:/etc/openvpn/client/ca.crt /etc/openvpn/
scp [emailprotected]:/etc/openvpn/client/client.crt /etc/openvpn/
scp [emailprotected]:/etc/openvpn/client/client.key /etc/openvpn/
scp [emailprotected]:/etc/openvpn/ta.key /etc/openvpn/
Mã:
systemctl start openvpn@client
Mã:
ifconfig
Mã:
enp0s3: flags=4163 mtu 1500 inet 192.168.0.102 netmask 255.255.255.0 phát sóng 192.168.0.255 inet6 fe80::a00:27ff:fe99:dc40 prefixlen 64 scopeid 0x20 ether 08:00:27:99:dc:40 txqueuelen 1000 (Ethernet) Gói RX 447 byte 42864 (41,8 KiB) Lỗi RX 0 bị loại bỏ 0 tràn 0 khung 0 Gói TX 334 byte 47502 (46,3 KiB) Lỗi TX 0 bị loại bỏ 0 tràn 0 sóng mang 0 va chạm 0lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) Gói RX 57 byte 9754 (9,5 KiB) Lỗi RX 0 bị loại bỏ 0 tràn 0 khung 0 Gói TX 57 byte 9754 (9,5 KiB) Lỗi TX 0 bị loại bỏ 0 tràn 0 sóng mang 0 va chạm 0tun0: flags=4305 mtu 1500 inet 10.8.0.6 netmask 255.255.255.255 đích 10.8.0.5 inet6 fe80::52b5:a1d2:fa23:f51e prefixlen 64 scopeid 0x20 unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (UNSPEC) Gói RX 0 byte 0 (0,0 B) Lỗi RX 0 bị loại bỏ 0 tràn 0 khung 0 Gói TX 9 byte 472 (472,0 B) Lỗi TX 0 bị loại bỏ 0 tràn 0 sóng mang 0 va chạm 0
Mã:
tail -f /var/log/openvpn/openvpn.log
Mã:
CN 22/9 19:46:08 2019 192.168.0.103:45700 Kênh điều khiển: TLSv1.3, mã hóa TLSv1.3 TLS_AES_256_GCM_SHA384, RSA 2048 bitCN 22/9 19:46:08 2019 192.168.0.103:45700 [_] Kết nối ngang hàng được khởi tạo với [AF_INET]192.168.0.103:45700CN 22/9 19:46:08 2019 _/192.168.0.103:45700 MULTI_sva: nhóm trả về IPv4=10.8.0.6, IPv6=(Không được bật)Chủ Nhật, 22 tháng 9, 19:46:08 2019 _/192.168.0.103:45700 MULTI: Tìm hiểu: 10.8.0.6 -> _/192.168.0.103:45700CN 22/09 19:46:08 2019 _/192.168.0.103:45700 ĐA: IP ảo chính cho _/192.168.0.103:45700: 10.8.0.6CN 22/09 19:46:09 2019 _/192.168.0.103:45700 PUSH: Đã nhận được tin nhắn điều khiển: 'PUSH_REQUEST'CN 22/09 19:46:09 2019 _/192.168.0.103:45700 ĐÃ GỬI KIỂM SOÁT [_]: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222, dhcp-option DNS 208.67.220.220, route 10.8.0.1, topology net30, ping 10, ping-restart 120, ifconfig 10.8.0.6 10.8.0.5, peer-id 0, cipher AES-256-GCM' (status=1)CN 22/09 19:46:09 2019 _/192.168.0.103:45700 Kênh dữ liệu: sử dụng mã hóa đã thương lượng 'AES-256-GCM'CN 22/09 19:46:09 2019 _/192.168.0.103:45700 Kênh dữ liệu đi: Mã hóa 'AES-256-GCM' được khởi tạo bằng khóa 256 bitCN 22/09 22 19:46:09 2019 _/192.168.0.103:45700 Kênh dữ liệu đến: Mã hóa 'AES-256-GCM' được khởi tạo bằng khóa 256 bit