Vultr cung cấp cho bạn kết nối mạng riêng tuyệt vời cho các máy chủ đang chạy ở cùng một vị trí. Nhưng đôi khi bạn muốn hai máy chủ ở các quốc gia / trung tâm dữ liệu khác nhau có thể giao tiếp một cách riêng tư và an toàn. Hướng dẫn này sẽ chỉ cho bạn cách đạt được điều đó với sự trợ giúp của OpenVPN. Các hệ điều hành được sử dụng ở đây là Debian và CentOS, chỉ để hiển thị cho bạn hai cấu hình khác nhau. Điều này có thể dễ dàng điều chỉnh cho Debian -> Debian, Ubuntu -> FreeBSD, v.v.
- Máy 1: Debian, sẽ hoạt động như một máy chủ (Vị trí: NL)
- Máy 2: CentOS, sẽ đóng vai trò là khách hàng (Vị trí: FR)
Máy 1
Bắt đầu trên máy 1 bằng cách cài đặt OpenVPN:
apt-get install openvpn
Sau đó, sao chép cấu hình ví dụ và công cụ để tạo khóa easy-rsa
,, vào /etc/openvpn
:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
Các giá trị mặc định cho khóa của bạn không còn an toàn chính xác nữa, để sửa lỗi mở này /etc/openvpn/easy-rsa/2.0/vars
bằng trình soạn thảo văn bản yêu thích của bạn và sửa đổi dòng sau:
export KEY_SIZE=4096
Tiếp theo, đảm bảo rằng các giá trị được tải vào phiên hiện tại của bạn, dọn sạch các khóa hiện có và tạo quyền chứng chỉ của bạn:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./clean-all
./build-ca
Bạn sẽ được nhắc thông tin. Làm cho cuộc sống của bạn dễ dàng hơn bằng cách cung cấp thông tin về máy chủ của bạn, ví dụ, vị trí của nó và FQDN là gì / sẽ là gì. Điều này hữu ích khi bạn phải gỡ lỗi:
Country Name (2 letter code) [US]:NL
State or Province Name (full name) [CA]:-
Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter NL
Organization Name (eg, company) [Fort-Funston]:-
Organizational Unit Name (eg, section) [changeme]:-
Common Name (eg, your name or your server's hostname) [changeme]:yourserver1.yourdomain.tld
Name [changeme]:-
Email Address [[email protected]]:[email protected]
Một điều cần thiết khác là các tham số cho việc trao đổi khóa Diffie-Hellman. Những người cần phải được tạo ra quá:
./build-dh
Quan trọng : build-dh
Lệnh là một quy trình tương đối phức tạp, có thể mất tới mười phút, tùy thuộc vào tài nguyên của máy chủ của bạn.
Để tiếp tục cải thiện tính bảo mật của kết nối này, chúng tôi sẽ tạo một bí mật tĩnh cần được phân phối giữa tất cả các khách hàng:
mkdir /etc/openvpn/keys
openvpn --genkey --secret /etc/openvpn/keys/ta.key
Bây giờ, bạn có thể tạo khóa cho máy chủ:
./build-key-server server1
Lệnh này sẽ nhắc cho một số thông tin:
Country Name (2 letter code) [US]:NL
State or Province Name (full name) [CA]:-
Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter NL
Organization Name (eg, company) [Fort-Funston]:-
Organizational Unit Name (eg, section) [changeme]:-
Common Name (eg, your name or your server's hostname) [server1]:yourserver1.yourdomain.tld
Name [changeme]:-
Email Address [[email protected]]:[email protected]
Bước cuối cùng là ký yêu cầu chứng chỉ vừa được tạo bằng khóa CA:
1 out of 1 certificate requests certified, commit? [y/n]y
Sao chép các khóa và chứng chỉ cần thiết vào một thư mục riêng:
cd /etc/openvpn/easy-rsa/2.0/keys
cp dh4096.pem ca.crt server1.crt server1.key /etc/openvpn/keys/
chmod 700 /etc/openvpn/keys
chmod 600 /etc/openvpn/keys/*
Bây giờ cho cấu hình, giải nén nó ...
cd /etc/openvpn
gunzip server.conf.gz
... và mở kết quả server.conf
với trình soạn thảo văn bản yêu thích của bạn. Cấu hình sẽ trông giống như thế này:
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server1.crt
key keys/server1.key
dh keys/dh4096.pem
server 10.8.100.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# Uncomment this if you have multiple clients
# and want them to be able to see each other
;client-to-client
keepalive 10 120
tls-auth keys/ta.key 0
tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
cipher AES-256-CBC
auth SHA384
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
verb 3
mute 20
Sau khi khởi động lại dịch vụ, bạn nên xem nhật ký của mình một chút ...
service openvpn restart && tail -f /var/log/syslog
... Để đảm bảo mọi thứ đều hoạt động. Nếu không phát hiện thấy lỗi, thì bạn có thể tạo khóa cho máy chủ thứ hai của mình:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./build-key server2
Một lần nữa, bạn sẽ được nhắc thông tin:
Country Name (2 letter code) [US]:FR
State or Province Name (full name) [CA]:-
Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter FR
Organization Name (eg, company) [Fort-Funston]:-
Organizational Unit Name (eg, section) [changeme]:-
Common Name (eg, your name or your server's hostname)
[server2]:yourserver2.yourdomain.tld
Name [changeme]:-
Email Address [[email protected]]:[email protected]
Bây giờ, bạn cần chuyển các tệp cần thiết sang máy chủ thứ hai của mình, tốt nhất là được mã hóa:
cd /etc/openvpn/easy-rsa/2.0/keys
cp /etc/openvpn/keys/ta.key .
tar -cf vpn.tar ca.crt server2.crt server2.key ta.key
scp vpn.tar yourusername@server2:~/
rm vpn.tar
Máy 2
Đã đến lúc chuyển sang kết nối SSH của máy chủ thứ hai của bạn . Bước đầu tiên là cài đặt OpenVPN ...
yum install openvpn
... và để hủy kích hoạt firewalld
. Sự thay thế sẽ là iptables đơn giản.
systemctl stop firewalld
systemctl disable firewalld
Giải nén tệp lưu trữ mà bạn vừa di chuyển đến máy chủ và đặt quyền cho các tệp:
cd /etc/openvpn
mkdir keys
chmod 700 keys
cd keys
tar -xf ~/vpn.tar -C .
chmod 600 *
Tạo /etc/openvpn/client.conf
với trình soạn thảo văn bản yêu thích của bạn. Nó sẽ giống như thế này:
client
dev tun
proto udp
remote yourserver yourport
resolv-retry infinite
nobind
user nobody
group openvpn
persist-key
persist-tun
ca keys/ca.crt
cert keys/server2.crt
key keys/.key
ns-cert-type server
tls-auth keys/ta.key 1
tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
cipher AES-256-CBC
auth SHA384
remote-cert-tls server
comp-lzo
verb 3
mute 20
Bước cuối cùng là bắt đầu và kích hoạt dịch vụ:
systemctl start [email protected]
systemctl enable [email protected]
Nếu mọi thứ đều hoạt động, thì bạn sẽ không gặp vấn đề gì với máy chủ đầu tiên:
PING 10.8.100.1 (10.8.100.1) 56(84) bytes of data.
64 bytes from 10.8.100.1: icmp_seq=1 ttl=64 time=17.8 ms
64 bytes from 10.8.100.1: icmp_seq=2 ttl=64 time=17.9 ms
64 bytes from 10.8.100.1: icmp_seq=3 ttl=64 time=17.8 ms
Bây giờ bạn có một kết nối riêng tư qua Internet!
Nếu bạn cần khắc phục bất kỳ lỗi nào, hãy thử kiểm tra nhật ký bằng lệnh sau:
journalctl -xn