CentOS7.X 部署OpenVPN

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7.X 部署OpenVPN相关的知识,希望对你有一定的参考价值。

1、实验环境

CentOS7.9
内网ens32:172.16.9.129
外网ens33:10.33.56.100

2、配置路由转发

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/99-sysctl.conf
sysctl -p

3、安装openvpn

yum -y install epel-release
yum -y install easy-rsa openssh-server lzo openssl openssl-devel openvpn NetworkManager-openvpn openvpn-auth-ldap iptables-services

4、生成证书文件

wget https://github.com/OpenVPN/easy-rsa-old/archive/2.3.3.tar.gz
tar -xf 2.3.3.tar.gz
mkdir -pv /etc/openvpn/easy-rsa/keys
cp easy-rsa-old-2.3.3/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

# 配置证书信息
cd /etc/openvpn/easy-rsa/
vi vars
# 替换尾部内容
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="BJ"
export KEY_ORG="DevOps"
export KEY_EMAIL="devops@sina.com"
export KEY_CN="devops"
export KEY_NAME="devops"
export KEY_OU="devops"
export PKCS11_MODULE_PATH=devops
export PKCS11_PIN=1234

# 制作CA证书
cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
source ./vars
./build-ca

# 制作Server端证书
./build-key-server server

# 制作防攻击的key文件和密钥文件
openvpn --genkey --secret keys/ta.key
./build-dh

# 制作Client端证书
./build-key client

# 复制证书文件到特定的配置路径下
cp keys/dh2048.pem,ca.crt,server.crt,server.key,ta.key /etc/openvpn/

# 如果中途异常,清空重新执行以上步骤
./clean-all

5、配置服务端

# 使用PAM和密码认证
tee /etc/openvpn/server.conf <<EOF
port 1194
proto udp
dev tap
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/<MYSERVER>.crt
key /etc/openvpn/easy-rsa/keys/<MYSERVER>.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
server 192.168.56.0 255.255.255.0
ifconfig-pool-persist ipp.txt
;learn-address ./script
client-to-client
;duplicate-cn
keepalive 10 120
;tls-auth ta.key 0
comp-lzo
;max-clients 100
;user nobody
;group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
client-cert-not-required
username-as-common-name
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
EOF

# 使用证书认证
tee /etc/openvpn/server.conf <<EOF
port 1194
proto tcp
dev tun0

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/<MYSERVER>.crt
key /etc/openvpn/easy-rsa/keys/<MYSERVER>.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3

log-append /var/log/openvpn
status /tmp/vpn.status 10
EOF

6、配置防火墙

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
/etc/rc.d/iptables save

7、启动服务

systemctl enable  --now openvpn@server.service

8、配置客户端

# 使用密码认证
client
dev tap
proto udp
remote <address> 1194
resolv-retry infinite
nobind
persist-tun
comp-lzo
verb 3
auth-user-pass passwd
ca ca.crt
备注:auth-user-pass 引用的 passwd 文件必须包含如下两行:
第一行 - username
第二行 - password

# 证书认证
client
remote <MYSERVER> 1194
dev tun0
proto tcp
resolv-retry infinite
nobind
persist-key
persist-tun
verb 2
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
备注:将ca.crt, client1.crt 和 client1.key复制到远程计算机

9、客户端工具

MAC:Tunnelblick
WINDOWS:OpenVPN Connect client

Centos7.x部署SeaFile私有网盘

1.安装依赖环境
yum -y install wge gcc-c++ ..........

2.关闭Firewalld防火墙和SElinux
systemctl stop firewalld
systemct disable firewalld
cd /etc/selinux/config
把enable更改成disabled

3.安装epel、Nux Dextop

安装epel

rpm -ivh http://mirrors.ustc.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

安装Nux Dextop

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

4.安装mysql或mariadb
yum -y install mariadb mariadb-server
systemctl enable mariadb
systemctl start mariadb

5.进行mariadb初始化设置
mysql_secure_installation

根据内容自行更改设置

第一次运行密码为空,回车。

Enter current password for root (enter for none):

需要设置root密码,输入y后回车。

Set root password? [Y/n] y
接着输入两次新密码。

是否删除匿名用户,回车。

Remove anonymous users? [Y/n]

是否禁止root远程登录,回车。

Disallow root login remotely? [Y/n]

是否删除test数据库,回车。

Remove test database and access to it? [Y/n]

是否重新加载权限表,回车。

Reload privilege tables now? [Y/n]

6.登录数据库
mysql -uroot -p #能正常进入数据库说明已经部署成功

7.给数据库设置权限

允许任意ip使用root远程连接

create user ‘root‘@‘%‘ identified by ‘root远程登录的密码‘;

添加权限给该root

grant all privileges on . to ‘root‘@‘%‘ identified by ‘root远程登录的密码‘;

配置立即生效

flush privileges;

8.安装seafile依赖环境
yum install -y python-memcached python-ldap python-urllib3 python-imaging MySQL-python python-distribute ffmpeg ffmpeg-devel

9.下载源码包
wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_6.2.5_x86-64.tar.gz

10.解压源码包
tar -zxf seafile-server_6.2.5_x86-64.tar.gz -C 路径

11.进入已经解压的文件进行安装
cd seafile-server-*
./setup-seafile-mysql.sh

12.根据下面内容进行自行设置

显示给客户端的服务名,输入服务名后回车。

What is the name of the server? It will be displayed on the client.

  • 15 letters or digits
    [ server name ] OpsBakPE

输入ip或域名,由于内部使用直接ip,输入ip后回车。

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server‘s ip or domain ] 192.168.16.203

使用默认,将数据文件放在/root/seafile-data下,回车。

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/root/seafile-data" ]

使用默认的文件服务端口8082,回车。

Which port do you want to use for the seafile fileserver?
[ default "8082" ]

# 使用新的seahub数据库,输入1后回车。

Please choose a way to initialize seafile databases:

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ] 1

由于刚才装了mariadb,使用默认本地,回车。

What is the host of mysql server?
[ default "localhost" ]

mariadb的默认端口就是3306,回车。

What is the port of mysql server?
[ default "3306" ]

使用默认的seafile作为seafile使用mariadb的用户,回车。

Enter the name for mysql user of seafile. It would be created if not exists.
[ default "seafile" ]

输入mariadb的用户seafile的密码,回车。

Enter the password for mysql user "seafile":
[ password for seafile ]

使用默认ccnet-db作为ccnet-server使用的数据库名,回车。

Enter the database name for ccnet-server:
[ default "ccnet-db" ]

使用默认seafile-db作为seafile-server使用的数据库名,回车。

Enter the database name for seafile-server:
[ default "seafile-db" ]

使用默认seahub-db作为seahub使用的数据库名,回车。

Enter the database name for seahub:
[ default "seahub-db" ]
等待片刻........提示安装成功

13.启动服务
./seafile.sh start

14.启动端口
./seafile.sh start 80 #没有设置端口默认是8000端口

15.访问
http://ip:80/ #如果没设置端口号就默认就行

16.登录账号密码

以上是关于CentOS7.X 部署OpenVPN的主要内容,如果未能解决你的问题,请参考以下文章

部署一个shopxo商城(ansible实现)

CentOS7.X部署Zabbix4.0

CentOS7.X环境下源码包安装部署RabbitMQ3.7.17

部署文档(centos7.x ginxmysql5.6jdk1.8ssljboot)

Centos7.x部署SeaFile私有网盘

CentOS7.X系统安装部署Consul1.4.2