在CentOS 7上配置VPN服务,特别是使用OpenVPN,是一个相对复杂但非常有用的任务,以下将详细介绍如何在CentOS 7上设置OpenVPN,包括安装、配置和常见问题解答:
准备工作
1、系统要求:确保服务器运行的是CentOS 7操作系统,并且已经有一个sudo非root用户。
2、域名解析:需要注册一个域名,并通过DNS记录解析到服务器的IP地址。
3、防火墙设置:使用firewalld设置防火墙,允许OpenVPN的流量通过。
安装OpenVPN
1、安装EPEL源:OpenVPN及其依赖包位于EPEL源中,首先安装EPEL源。
```bash
yum install y epelrelease
```
2、安装依赖包:安装OpenVPN所需的依赖包,包括openssl、lzo等。
```bash
yum install y openssl lzo pam openssldevel lzodevel pamdevel
```
3、安装EasyRSA:EasyRSA用于生成和管理证书及密钥。
```bash
yum install y easyrsa
```
4、安装OpenVPN:最后安装OpenVPN本身。
```bash
yum install y openvpn
```
配置OpenVPN
1、选择路由或桥接模式:建议使用路由模式,除非有特殊需求需要桥接。
2、确定私有子网:选择一个不会与现有网络冲突的子网,例如10.8.0.0/16。
3、生成证书和密钥:使用EasyRSA生成服务器和客户端的证书及密钥。
```bash
cp rf /usr/share/easyrsa/3.0.6 /etc/openvpn/server/easyrsa
cd /etc/openvpn/server/easyrsa
./easyrsa initpki
./easyrsa buildca nopass
./easyrsa buildserverfull server nopass
./easyrsa gendh
openvpn genkey secret ta.key
```
4、配置服务器端:编辑OpenVPN服务器配置文件。
```bash
mkdir p /var/log/openvpn/
mkdir p /etc/openvpn/server/user
chown R openvpn:openvpn /var/log/openvpn
vim /etc/openvpn/server/server.conf
```
配置文件内容示例:
```text
port 55555
proto tcp
dev tun
user openvpn
group openvpn
ca /etc/openvpn/server/easyrsa/pki/ca.crt
cert /etc/openvpn/server/easyrsa/pki/issued/server.crt
key /etc/openvpn/server/easyrsa/pki/private/server.key
dh /etc/openvpn/server/easyrsa/pki/dh.pem
tlsauth /etc/openvpn/server/easyrsa/ta.key 0
authuserpassverify /etc/openvpn/server/user/checkpsw.sh viaenv
scriptsecurity 3
verifyclientcert none
usernameascommonname
clienttoclient
duplicatecn
server 10.8.0.0 255.255.255.0
push "dhcpoption DNS 223.5.5.5"
push "dhcpoption DNS 114.114.114.114"
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
compress lzo
cipher AES256CBC
keepalive 10 120
persistkey
persisttun
verb 3
log /var/log/openvpn/server.log
logappend /var/log/openvpn/server.log
status /var/log/openvpn/status.log
```
5、创建用户密码文件:格式为用户名 空格 密码。
```bash
echo 'mytest mytestpass' >> /etc/openvpn/server/user/pswfile
chmod 600 /etc/openvpn/server/user/pswfile
chown openvpn:openvpn /etc/openvpn/server/user/pswfile
```
6、创建密码检查脚本:新建一个shell文件并写入以下内容。
```bash
#!/bin/sh
PASSFILE="/etc/openvpn/server/user/pswfile"
LOG_FILE="/var/log/openvpn/password.log"
TIME_STAMP=date "+%Y%m%d %T"
if [ ! r "${PASSFILE}" ]; then
echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
exit 1
fi
CORRECT_PASSWORD=awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}
if [ "${CORRECT_PASSWORD}" = "" ]; then
echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
else
echo "${TIME_STAMP}: Access granted for user \"${username}\"." >> ${LOG_FILE}
echo "${CORRECT_PASSWORD}"
fi
```
启动和测试OpenVPN
1、启动OpenVPN服务:使用systemctl命令启动OpenVPN服务。
```bash
systemctl start openvpn@server
```
2、查看日志:检查OpenVPN的日志文件以确保一切正常。
```bash
tail f /var/log/openvpn/server.log
```
FAQs(常见问题解答)
1、如何修改系统时间以确保证书验证通过?:确保服务器和客户端的时间正确非常重要,否则会导致证书验证失败,可以通过以下步骤修改系统时间:查看当前系统时间,修改当前系统时间,查看硬件时间,修改硬件时间,同步系统时间和硬件时间,保存时钟并重启系统。
2、如何添加永久关闭SELinux的配置?:如果需要永久关闭SELinux,可以修改配置文件,临时关闭SELinux的命令是setenforce 0
,然后修改配置文件/etc/selinux/config
,将SELINUX=enforcing
改为SELINUX=disaBLed
。
通过上述步骤,可以在CentOS 7上成功配置OpenVPN服务,实现安全的远程访问和数据传输,希望这些信息对您有所帮助!