您当前的位置:首页 > 计算机 > 软件应用 > 网络应用

如何搭建OpenVPN详细教程

时间:07-23来源:作者:点击数:

搭建OpenVPN需要您具备一定的Linux系统基础知识,以下是OpenVPN的搭建教程:

  1. 准备工作
  • 一台安装了CentOS或Ubuntu的Linux服务器,本教程以CentOS 7为例
  • 一个域名或者IP地址,用于远程访问VPN
  1. 安装OpenVPN

在终端输入以下命令安装OpenVPN:

sudo yum install -y epel-release
sudo yum install -y openvpn
  1. 配置OpenVPN
  • 创建OpenVPN配置文件:

在终端中输入以下命令创建OpenVPN配置文件:

cd /etc/openvpn
sudo cp -r /usr/share/doc/openvpn/sample/sample-config-files/* .
  • 配置OpenVPN:

使用文本编辑器打开/etc/openvpn/server.conf,并修改以下配置:

dev tun
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
user nobody
group nobody
keepalive 10 120
tls-auth ta.key 0 # This file is secret
key server.key
cert server.crt
dh dh.pem
verb 3

其中10.8.0.0 255.255.255.0是VPN分配给客户端的IP地址范围,redirect-gateway def1 bypass-dhcp表示将客户端所有的网络流量都通过VPN进行转发,8.8.8.88.8.4.4是Google的DNS服务器地址,用于解析域名。

  • 生成证书和密钥:
    cd /etc/openvpn
    sudo openvpn --genkey --secret ta.key
    sudo openssl dhparam -out dh.pem 2048
    sudo openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
    sudo openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
    
  • 在终端中输入以下命令生成证书和密钥:
  • 启动OpenVPN:

在终端中输入以下命令启动OpenVPN:

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
  1. 客户端连接VPN
  • 创建客户端配置文件:

在终端中输入以下命令创建客户端配置文件:

cd /etc/openvpn
sudo cp client.conf /etc/openvpn/client.ovpn
  • 修改客户端配置文件:

使用文本编辑器打开/etc/openvpn/client.ovpn,并修改以下配置:

client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
key-direction 1
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIE...
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIE...
-----END CERTIFICATE-----
</cert>
<key>
-----
  • 启动OpenVPN:

在终端中输入以下命令启动OpenVPN:

sudo openvpn --config /etc/openvpn/client.ovpn

其中YOUR_SERVER_IP是VPN服务器的IP地址。

  1. 测试连接

在客户端电脑中打开终端,输入以下命令测试连接:

ping 10.8.0.1

如果VPN连接成功,就可以看到VPN服务器的响应。

至此,您已经成功搭建了一个OpenVPN服务器。请注意,在实际使用中,需要进行更严格的安全设置,例如使用防火墙、关闭不必要的端口等。

最后附上自动搭建脚本:

#!/bin/bash

# 获取脚本执行时的参数
while getopts "d:k:" arg
do
    case $arg in
        d)
            DOMAIN=$OPTARG;;
        k)
            KEY=$OPTARG;;
        ?)
            echo "Usage: $0 -d <domain name> -k <client key name>"
            exit 1;;
    esac
done

# 安装easy-rsa并创建证书
yum install -y easy-rsa
cd /usr/share/easy-rsa/3
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-dh
./easyrsa gen-crl
./easyrsa build-server-full server nopass

# 配置OpenVPN
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/
sed -i -e 's/;tls-auth ta.key 0/tls-auth ta.key 0/' -e 's/;cipher AES-128-CBC/cipher AES-256-CBC/' /etc/openvpn/server.conf
echo 'push "redirect-gateway def1 bypass-dhcp"' >> /etc/openvpn/server.conf
echo 'push "dhcp-option DNS 8.8.8.8"' >> /etc/openvpn/server.conf
echo 'push "dhcp-option DNS 8.8.4.4"' >> /etc/openvpn/server.conf
echo 'user nobody' >> /etc/openvpn/server.conf
echo 'group nobody' >> /etc/openvpn/server.conf

# 生成客户端证书和配置文件
./easyrsa build-client-full $KEY nopass
cp pki/ca.crt pki/private/server.key pki/issued/server.crt /etc/openvpn
cp /usr/share/doc/openvpn-*/sample/sample-config-files/client.conf /etc/openvpn/$KEY.ovpn
sed -i -e "s/remote my-server-1 1194/remote $DOMAIN 1194/" -e 's/;user nobody/user nobody/' -e 's/;group nobody/group nobody/' /etc/openvpn/$KEY.ovpn
echo '<ca>' >> /etc/openvpn/$KEY.ovpn
cat /usr/share/easy-rsa/3/pki/ca.crt >> /etc/openvpn/$KEY.ovpn
echo '</ca>' >> /etc/openvpn/$KEY.ovpn
echo '<cert>' >> /etc/openvpn/$KEY.ovpn
cat /usr/share/easy-rsa/3/pki/issued/$KEY.crt >> /etc/openvpn/$KEY.ovpn
echo '</cert>' >> /etc/openvpn/$KEY.ovpn
echo '<key>' >> /etc/openvpn/$KEY.ovpn
cat /usr/share/easy-rsa/3/pki/private/$KEY.key >> /etc/openvpn/$KEY.ovpn
echo '</key>' >> /etc/openvpn/$KEY.ovpn
echo '<tls-auth>' >> /etc/openvpn/$KEY.ovpn
cat /usr/share/easy-rsa/3/pki/ta.key >> /etc/openvpn/$KEY.ovpn
echo '</tls-auth>' >> /etc/openvpn/$KEY.ovpn

# 启动OpenVPN
systemctl start openvpn@server
systemctl enable openvpn@server

echo "OpenVPN server is now running on
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门