ikuai vpn了解下
软路由系统 --- iKuai搭建OpenVPN服务_ikuai软路由-CSDN博客
安装openvpn 步骤。
window 端下载:
软件: https://url69.ctfile.com/d/253469-55962967-b6c5e4?p=2206 (访问密码: 2206)
1 生成证书
yum install -y easy-rsa
mkdir /opt/easy-rsa
cd /opt/easy-rsa/
#看生成的文件
rpm -ql easy-rsa
cp -a /usr/share/easy-rsa/3.0.8/* .
cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars
> vars
一、什么是openvpn
VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。
就是为了两点之间传输数据更加的安全
二、openvpn应用场景
1,个人出差需要访问服务器
2,公司不同地区建立服务通信 (IDC-IDC)
三、openvpn服务端配置
1,生成证书
yum install -y easy-rsa
mkdir /opt/easy-rsa
cd /opt/easy-rsa/
#看生成的文件 rpm -ql easy-rsa
cp -a /usr/share/easy-rsa/3.0.8/* .
cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars
> vars
[root@m01 easy-rsa]# cat vars
if [ -z "$EASYRSA_CALLER" ]; then
echo "You appear to be sourcing an Easy-RSA
'vars' file." >&2
echo "This is no longer necessary and is
disallowed. See the section called" >&2
echo "'How to use this file' near the top
comments for more details." >&2
return 1
fi
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Beijing"
set_var EASYRSA_REQ_CITY "Shanghai"
set_var EASYRSA_REQ_ORG "baimei"
set_var EASYRSA_REQ_EMAIL "baimei@qq.comm"
set_var EASYRSA_NS_SUPPORT "yes"
#1.初始化,在当前目录创建PKI目录,用于存储证书
[root@m01 /opt/easy-rsa]# ./easyrsa init-pki
#2.创建根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他默认
#温馨提示: 加上密码
[root@m01 easy-rsa]# ./easyrsa build-ca
Enter New CA Key Passphrase: #设置个密码
Re-Enter New CA Key Passphrase: #确认密码
#3.创建server端证书和私钥文件,nopass表示不加密私钥文件,其他可默认
[root@m01 easy-rsa]# ./easyrsa gen-req server nopass
#4.给server端证书签名,首先是对一些信息的确认,可以输入yes,然后创建ca根证书时设置的密码
##########################################################################
[root@m01 easy-rsa]# ./easyrsa sign server server
#5.创建Diffie-Hellman文件,秘钥交换时的Diffie-Hellman算法
[root@m01 easy-rsa]# ./easyrsa gen-dh
#6.创建client端证书和私钥文件,nopass表示不加密私钥文件,其他可默认
[root@m01 easy-rsa]# ./easyrsa gen-req client nopass
#7.给client端证书签名,首先是对一些信息的确认,可以输入yes,然后创建ca根证书时设置的密码
##########################################################################
[root@m01 easy-rsa]# ./easyrsa sign client client
#总结目前为止的目录结构及主要内容
[root@m01 /opt/easy-rsa]# tree
.
├── easyrsa #管理命令
├── pki
│ ├── ca.crt #ca证书 服务端与客户端都是用
│ ├── dh.pem #认证算法 服务端
│ ├── issued
│ │ ├── client.crt #客户端证书
│ │ └── server.crt #服务端证书
│ ├── private
│ │ ├── ca.key
│ │ ├── client.key #客户端私钥
│ │ └── server.key #服务端私钥
2,安装openvpn
yum -y install openvpn
3,服务端配置文件
[root@m02 ~]#cat /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca /opt/easy-rsa/pki/ca.crt
cert /opt/easy-rsa/pki/issued/server.crt
key /opt/easy-rsa/pki/private/server.key
dh /opt/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0
push "route 172.16.1.0 255.255.255.0"
ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 100
status openvpn-status.log
log /var/log/openvpn.log
verb 3
client-to-client
persist-key
persist-tun
duplicate-cn
comp-lzo
4,服务端配置文件详解
[root@m02 ~]#cat /etc/openvpn/server.conf
port 1194 #端口
proto udp #协议
dev tun #采用路由隧道模式
ca /opt/easy-rsa/pki/ca.crt #ca证书的位置
cert /opt/easy-rsa/pki/issued/server.crt #服务端公钥的位置
key /opt/easy-rsa/pki/private/server.key #服务端私钥的位置
dh /opt/easy-rsa/pki/dh.pem #证书校验算法
server 10.8.0.0 255.255.255.0 #给客户端分配的地址池
push "route 172.16.1.0 255.255.255.0" #允许客户端访问的内网网段
ifconfig-pool-persist ipp.txt #地址池记录文件位置 未来让openvpn 客户端固定ip地址使用的.
keepalive 10 120 #存活时间,10秒ping一次,120 如未收到响应则视为断线
max-clients 100 #最多允许100个客户端连接
status openvpn-status.log #日志位置 记录openvpn状态
log /var/log/openvpn.log #openvpn日志记录位置
verb 3 #openvpn版本
client-to-client #允许客户端与客户端之间通信
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
persist-tun #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup
duplicate-cn #客户端密钥(证书和私钥)是否可以重复
comp-lzo #启用lzo数据压缩格式
5,启动并检查端口
#启动并自启
systemctl start openvpn@server
systemctl enable openvpn@server
#看网段
[root@m01 ~]# ip a s tun0
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu
1500 qdisc pfifo_fast state UNKNOWN group default qlen
100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::a012:99d:88da:14dd/64 scope link flags
800
valid_lft forever preferred_lft forever
#检查端口
[root@m01 ~]# ss -lntup |grep 1194
udp UNCONN 0 0 *:1194
*:* users:
(("openvpn",pid=12564,fd=6))
[root@m01 ~]# ps -ef |grep openvpn
root 12564 1 0 17:44 ? 00:00:00
/usr/sbin/openvpn --cd /etc/openvpn/ --config
server.conf
四、openvpn客户端配置(windows)
client
dev tun
proto udp
remote 10.0.0.62 1194
resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
verb 3
persist-key
comp-lzo
ping内网测试
如何直连内网服务器
#ping测试
tcpdump -i eth1 -nn icmp
#添加路由
route add 10.8.0.0/24 gw 172.16.1.61
五、openvpn客户端配置(linux)
[root@web01 /etc/openvpn]#cat /etc/openvpn/client.conf
client
dev tun
proto udp
remote 10.0.0.62 1194
resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
verb 3
persist-key
comp-lzo
六、openvpn密码认证
1,服务端配置
1.先配置服务端支持密码认证:
vim /etc/openvpn/server.conf
script-security 3 #允许使用自定义脚本
auth-user-pass-verify /etc/openvpn/check.sh via-env #指定认证脚本
username-as-common-name #用户密码登陆方式验证
2.编写/etc/openvpn/check.sh 脚本文件
cat /etc/openvpn/check.sh
#!/bin/bash
PASSFILE="/etc/openvpn/openvpnfile" #密码文件 用户名 密码明文
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}
exit 1
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
exit 0
fi
echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1
3. 设置权限
chmod +x /etc/openvpn/check.sh
4. 创建用户,空格作为分隔符
cat /etc/openvpn/openvpnfile
baimei 1
5. 重启服务端
systemctl restart openvpn@server
2,客户端配置
auth-user-pass