Docker
服务搭建
Docker-笔记类
Docker-Wiki.js
Docker-Trilium(个人云笔记)
Docker-MrDoc(觅思文档)
Docker-MinDoc(文档管理系统)
Docker-Wiz(为知笔记)
Docker-Wizard(开源文档管理系统)
Docker-siyuan(思源笔记)
Docker-Athensresearch(雅典)
Docker-Logseq(日志序列)
Docker-Joplin Server(需搭配APP)
MarkDown-进阶
Docker-AFFiNE(白板文档)
Docker-Obsidian(黑曜石)
Html-文章保护
Docker-Memos(备忘录)
Docker-Etherpad(实时协作在线编辑器)
Docker-AppFlowy
Docker-DokuWiki(维基)
Docker-小书匠
Docker-MD(微信 Markdown编辑器)
Docker-Halo(个人博客)
闲置宽带利用
甜糖
网心云
点心云
Docker-JS TOOL(京豆)
Docker-Gitea(代码托管平台)
Git使用小技巧
Git-命令推送
Git-常用命令
Docker-CentOS
Docker-iperf3(网络测速)
Docker-QingLong(青龙面板)
🚫青龙-NolanJDCloud
青龙-Ninja
青龙-京豆
青龙-互助码
青龙-WxPusher(通知)
青龙-其他脚本
青龙-bilibili
青龙-短视频金币
青龙-常见问题
青龙-迁移
青龙-快速部署
Docker-EMQX(MQTT服务器)
EMQX-高级操作
Docker-Home Assistant
Docker-RustDesk(远程桌面)
Docker-邮箱系统
Docker-SRS(直播服务器)
Docker-Bitwarden(密码服务器)
Bitwarden-TOTP(双因素认证2FA)
Docker-书签/导航
Docker-OneNav
Docker-Flare
Docker-WebStack
Docker-GEEKAPE
Docker-nav(发现导航)
Docker-Linkding(网络书签)
Docker-Wallabag(网络书签)
Docker-Benotes(书签)
Docker-LyLme Spage(六零导航页)
Docker-Homarr(浏览器仪表板)
Docker-Sun-Panel
Docker-Nginx
Docker-nginxWebUI(反向代理)
Docker-Nginx Proxy Manager
Docker-Nginx Config(配置生成器)
Docker-Nginx UI
Nginx-配置详细说明
PHP扩展
Nginx-安全
Nginx-Shell管理脚本
Docker-Redis
Docker-Jupyter(Python在线环境)
JupyterHub(支持课程管理)
Jupyter(单用户)
Jupyter-OpenCV
JupyterHub-自构建
Docker-LiveTorrent(磁力链在线解析)
Docker-OpenVPN
OpenVPN-配置注释
OpenVPN-基础部署
OpenVPN-一键脚本部署
OpenVPN-访问内部设备
OpenVPN-ovpn-admin(WebUI)
Docker-Switch联机
Docker-网站统计
Docker-Umami
Docker-Matomo
Docker-IPsecVPN
Docker-Zerotier(虚拟组网)
ZeroTier-Planet(星球)
Zerotier-Moons(月亮)
Zerotier-伪根服务器(修改UI)
ZeroTier-局域组网
Docker-Linux
Docker-Screeps 服务器
Docker-Harbor(Docker 镜像服务器)
Harbor-镜像迁移
docker-mirror(镜像转存工具)
Docker-Reader(网文阅读器)
Docker-聊天类
Docker-Rocket.chat(IM聊天系统)
Docker-Fiora(二次元聊天室)
Docker-Mattermost(开发者聊天室)
Docker-唐僧叨叨
Docker-Mastodon
Docker-VoceChat
Docker-blogChat(在线聊天室)
Docker-NASTools(影音库工具)
Docker-Lottery(抽奖程序)
Docker-VSCode Web版
Docker-临时分享类
Docker-PasteMe(自销毁小纸条)
Docker-PasteBin(临时分享)
Docker-Pingvin Share(文件分享)
Docker-Snapdrop(局域网传输)
Docker-FileCodeBox(文件快递柜)
Docker-microbin(临时分享)
Docker-PairDrop(局域网传输)
Docker-FastSend(文件快传)
Docker-internal-chat(局域网文字/文件)
Docker-Enclosed(私密安全笔记)
Docker-任务管理类
Docker-TAIGA(看板)
Docker-Focalboard(看板)
Docker-DooTask(轻量级任务管理工具)
Docker-Vikunja(待办事项)
Docker-Tasks.md(任务管理板)
Docker-Send(私密文件分享)
Docker-ScreeGo(在线多人屏幕分享)
Docker-ChatGPT
ChatGPT(伪)-部署
ChatGPT-未测试项目
ChatGPT-ChatGPT Web
🚫ChatGPT-ChatGPT Vercel
🚫ChatGPT-PandoraNext(潘多拉)
🚫ChatGPT-PandoraNext-Helper(Token管理)
Docker-kkFileView(文件在线预览)
Docker-问卷考试类
Docker-学之思(开源考试系统)
Docker-文字识别类(OCR)
Docker-OCR(Python)
Docker-Paperless-ngx(无纸化)
Docker-短链类
Docker-Yourls(短链)
Worker短链(CloudFlare)
Docker-GreaterWMS(仓管系统)
Docker-内网穿透
Docker-Frp
Docker-NPS
Frp-客户端配置工具
Docker-Frp-Panel
Docker-OpenP2P
Docker-网盘
Docker-AList(云盘直链)
🚫Docker-FileRun(个人网盘)
Docker-腾飞WebOS
Docker-Cloudreve(支持WebDAV子账户)
Docker-Seafile
Docker-ZFile
Docker-Dufs(轻量文件服务器)
Docker-FileGator
Docker-SSH/远程桌面
Docker-Guacamole(远程桌面)
Docker-Nexterm(服务器管理软件)
Docker-Sshwifty(SSH&Telnet客户端)
Docker-Next Terminal(Web终端)
Docker-CF_Tunnels(隧道)
Docker-RouYi_WMS
Docker-图形化管理工具
Docker-Portainer(图形化管理工具)
Docker-SimpleDocker(Docker控制面板)
Docker-Easypanel(易面板)
Docker-DockerUI(国内图形化)
Docker-1Panel
Docker-宝塔
Docker-lazydocker(Shell UI)
Docker-⭐DPanel(可视化管理面板)
Docker-⭐Dockge(docker-compose管理器)
Docker-Dokploy(PaaS)
Docker-UpSnap(局域网唤醒)
Docker-Watchtower(自动更新)
Docker-RunnerGo(全栈测试)
Docker-Web工具箱
Docker-Stirling-PDF(PDF工具)
Docker-IT Tools(IT工具箱)
Docker-Reference(速查神器)
Docker-Photopea(在线PS)
Docker-miniPaint(在线PS)
Docker-Morphos(文件转换)
Docker-证件照片排版
Docker-网易云解锁
Docker-nondanee_UnblockNeteaseMusic
Docker-UnblockNeteaseMusic
Docker-LX Music_Sync(数据同步)
Docker-在线白板类
Docker-Wbo(协作白板)
Docker-Excalidraw+(在线白板)
Docker-tldraw
Docker-Cook(今天吃什么)
Docker-Android
Docker-QD(自动签到)
QD-使用说明
Docker-消息推送(通知)
Docker-Wecom酱
Docker-Gotify(消息通知)
Docker-WeChatBot(微信机器人)
Docker-lumen项目部署
Docker-简历构建器
Docker-Open Resume
Docker-Reactive Resume
Docker-照片备份
Docker-Immich
Docker-vlmcsd(KMS)
Docker-Papermerge(数字档案文件管理系统)
Docker-SearXNG(搜索引擎)
Docker-Snipe-IT(资产管理)
Docker-Moments(极简朋友圈)
Docker-neko(浏览器)
Docker-AsPoem(诗词网站)
Docker-CMS(内容管理系统)
Docker-Ikaros(个人内容管家)
Docker-JPress
Docker-OneKVM(类向日葵控控)
Docker-OS(系统)
Docker-DSM(群晖)
Docker-OSX(MacOS)
Docker-Puter(云端系统)
Docker-GodoOS(内网办公操作系统)
Docker-Nextcloud
Docker-KodCloud(可道云)
Docker-MacOS
Docker-Windows
Docker-Ferry(工单系统)
Docker-HivisionIDPhotos(AI证件照)
Docker-IPTVnator(IPTV播放器)
Docker-SQL工具
Docker-SQLynx
Docker-STUN/TURN(Coturn)
Docker-gocron(定时任务管理系统)
Docker-paopao-ce(微社区)
Docker-JSON Hero(JSON浏览器)
Docker-n8n(工作流自动化)
Docker-Aria2
Docker-NTP(时间服务器)
Docker-EasyTier(异地组网)
Linux-EasyTier
EasyTier-配置文件
Docker-Domain Admin(域管理员)
Docker-WPS
卷的使用
备份与还原
各种开源项目(未测试)
限制资源
开放端口调整
更换 Docker 源
镜像转存DockerHub
DockerHub 代理加速(Cloudflare Worker)
Docker 代理加速(Cloudflare Worker)
代理加速
⭐CF-Workers-docker(DockerHub 加速)
docker run 转 docker-compose
Docker 解释
Dockerfile(自建镜像)
使用第三方构建
多阶段构建(缩小体积)
Docker的备份服务器
Kasm(Web服务)
Docker-备份与还原
Docker-volume(卷)
Docker-network(网络)
Linux 安装 Docker
Windows 安装 Docker
Win7 安装 Docker
游戏服务器搭建
Docker-Valheim(英灵神殿)
Docker-jsnes(在线NES)
Docker-7DaysToDie(七日杀)
7DaysToDie-配置文件
Docker-Conan Exiles(流放者柯南)
Docker-noname(无名杀)
Docker-Epic游戏商城每周免费游戏
Docker-Terraria(泰拉瑞亚)
泰拉瑞亚-服务器
Terrari-存档同步
Docker-Mindustry(像素工厂)
Docker-Habitica(习惯养成RPG)
Docker-RetroArch(在线模拟器)
Docker-vue-idle-game(轮回勇士传说)
Docker-Phira(Phigros 二创版)
Docker-Pterodactyl(翼龙面板⭐)
Pterodactyl-自建预设(游戏部署脚本)
Docker-GamePanelX-V3(游戏面板)
Docker-MCSManager(游戏面板⭐)
Docker-Easy-WI(游戏面板)
Docker-常见问题处理
Podman(Docker替代品)
Docker-Linux Command(Linux命令搜索引擎)
Docker-修改存储位置
Dockerc(编译为独立二进制文件)
slim(镜像瘦身)
Docker-API(远程连接)
Docker-cloudbak(云朵备份)
本文档使用 MrDoc 发布
-
+
首页
OpenVPN-基础部署
**相关链接:** --- - OpenVPN: - 官网:https://openvpn.net/ - 文档:https://openvpn.net/community-resources/how-to/ - GitHub:https://github.com/OpenVPN/openvpn - 客户端下载:https://openvpn.net/client/ - Easy-RSA: - 文档:https://easy-rsa.readthedocs.io/en/latest/ - GitHub:https://github.com/OpenVPN/easy-rsa ## 服务器配置 ```bash apt install -y openvpn git # 安装所需软件 cd /etc/openvpn # OpenVPN 配置目录 ######################### 服务器配置(生成证书后) ######################## nano /etc/openvpn/server.conf # 编辑OpenVPN配置文件 openvpn --config /etc/openvpn/server.conf # 手动启动,前台运行,用于测试 systemctl start openvpn@server # 启动openvpn服务(server为server.conf 省略拓展名) systemctl enable openvpn@server # 设置openvpn自启(disable 关闭自启) ######################### 服务器(路由转发) ######################## # 临时-启用路由转发(允许内部访问必须开启) sysctl -w net.ipv4.ip_forward=1 # 临时开启 IPv4 路由转发 sysctl -w net.ipv6.conf.all.forwarding=1 # 临时开启 IPv6 路由转发 # 永久-启用路由转发 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # 写入开启 IPv4 路由转发 echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf # 写入开启 IPv6 路由转发 sysctl -p # 应用配置 ######################### 客户端证书相关导出 ######################## # 导出客户端相关证书文件 cd /easyrsa/pki && tar -czvf cert.tar.gz ca.crt issued/client.crt private/client.key dh.pem # 进入证书所在文件夹并打包 scp -P 22 root@<主机名称>:/easyrsa/pki/cert.tar.gz . # 下载打包的证书到本地 ``` 若要允许访问服务器内部其它设备,必须 `启用路由转发`+ [`配置 iptables 规则`](/doc/756/) ### 使用 Easy-RSA 生成证书 ```bash # 准备 Easy-RSA 环境 cd / # 存放在根目录下(EasyRSA项目路径为:/easyrsa) wget https://git.918178.xyz/https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.7/EasyRSA-3.1.7.tgz -O EasyRSA.tgz && tar -xzvf EasyRSA.tgz # 下载 EasyRSA 并解压 mv EasyRSA-* easyrsa && cd easyrsa # 修改 EasyRSA 文件夹名称并进入 # 初始化 ./easyrsa init-pki # 初始化 ./easyrsa build-ca # 创建CA根证书 # ./easyrsa build-ca nopass # 可添加 nopass 不进行加密,创建证书时也不会进行验证 Enter New CA Key Passphrase: # 设置密码(用于ca对之后生成的server和client证书签名时使用) Re-Enter New CA Key Passphrase: # 重复输入密码 # 其他提示内容直接回车即可 # 创建 Diffie-Hellman文件 ./easyrsa gen-dh ################################# 一步创建(证书) ################################# ./easyrsa build-server-full server nopass # 创建名为 server 的server类型的证书并签名 ./easyrsa build-client-full client nopass # 创建名为 client 的client类型的证书并签名 ################################# 分步创建(证书) ################################# # 创建证书_Server 端 ./easyrsa gen-req server nopass # 创建名为server的证书和私钥文件(nopass不加密,否则每次启动服务器都需要输入密码验证) # 提示内容直接回车即可 ./easyrsa sign server server # 使用server类型为名为server的证书进行签名 Confirm request details: # 输入 yes Enter pass phrase for /easyrsa/pki/private/ca.key: # 创建CA根证书设置的密码 # 创建证书_Client 端 ./easyrsa gen-req client nopass # 创建名为client的证书和私钥文件(nopass不加密,否则每次启动客户端都需要输入密码验证) # 提示内容直接回车即可 ./easyrsa sign client client # 使用client类型为名为client的证书进行签名 Confirm request details: # 输入 yes Enter pass phrase for /easyrsa/pki/private/ca.key: # 创建CA根证书设置的密码 # 其它命令 tree # 检查是否有ca根证书、客户端/服务端证书、客户端/服务端私钥 openvpn --genkey --secret /easyrsa/ta.key # 创建TLS认证密钥(可选) ./easyrsa revoke <证书名称> # 吊销证书 nano /easyrsa/vars # 修改证书有效期(需要重新初始化 Easy-RSA,并重新创建证书) set_var EASYRSA_CERT_EXPIRE 3650 # 一般默认10年 export EASYRSA_CERT_EXPIRE=123 # 环境变量方式设置证书有效期(断开后清除) export # 查看全部环境变量 echo $<环境变量名> # 查看指定环境变量 unset <环境变量名> # 清除指定环境变量 ``` ### 证书认证形式 `/etc/openvpn/server.conf` 服务器端配置文件 ```bash # 指定 OpenVPN 使用的协议和端口 ;local 192.168.100.233 # 监听的本地IP地址 port 1194 # 默认端口是 1194 proto udp # tcp/udp proto udp6 # tcp6/udp6 dev tun # 指定使用的设备类型,三层路由IP隧道(tun)二层以太网隧道(tap) # 指定证书和密钥的位置 ca /easyrsa/pki/ca.crt # ca证书的位置# ca证书的位置 cert /easyrsa/pki/issued/server.crt # 服务端公钥的位置 key /easyrsa/pki/private/server.key # 服务端私钥的位置 dh /easyrsa/pki/dh.pem # 证书校验算法 # 指定 OpenVPN 使用的虚拟内网地址和子网掩码 server 10.8.0.0 255.255.255.0 # 给客户端分配的地址池 ifconfig-pool-persist ip.txt # 指定用于持久化存储客户端分配的 IP 地址的文件 # 推送给客户端的选项,例如将默认网关设置为 VPN 服务器 push "route 192.168.100.0 255.255.255.0" # 允许客户端访问的内网网段 ;push "redirect-gateway def1 bypass-dhcp" # 默认网关设置为 VPN 服务器 ;push "dhcp-option DNS 223.5.5.5" # 推送给客户端的 DNS 服务器 ;push "dhcp-option DNS 1.1.1.1" client-to-client # 允许客户端与客户端之间通信 # 保持连接活动的选项 keepalive 10 120 # 存活时间,10秒ping一次,120秒如果未收到响应则视为断开 max-clients 100 # 最多允许100个客户端连接 # OpenVPN 日志 status openvpn-status.log # OpenVPN 连接状态文件 verb 3 # 设置 OpenVPN 的日志详细级别 # 持久化 TUN/TAP 设备和密钥 persist-key # 通过keepalive检测超时后,重新启动VPN,不重新读取 persist-tun # 检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup duplicate-cn # 允许使用相同证书(禁用则需要每个客户端都要单独生成一个证书) comp-lzo # 启用 LZO 压缩(兼容旧版客户端压缩,双方必须一致) ``` `client.ovpn` 客户端配置文件 ```bash client # 指定为客户端模式 dev tun # 指定使用的设备类型 proto udp # 使用UDP协议,也可以选择tcp remote blynk.space 1194 # OpenVPN服务器的域名/IP地址和端口号 resolv-retry infinite # 断开连接后自动重连,特别在网络不稳定时有用 ;persist-key # 如果使用keepalive检测到超时,则重新启动VPN,使用第一次生成的keys ;persist-tun # 检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup ;nobind # 大多数客户端不需要绑定到特定的本地端口号 # 指定证书和密钥的位置,也可直接将证书和密钥的内容插入配置文件 ca ca.crt # CA证书的位置,<ca>...</ca> cert client.crt # 客户端证书的位置,<cert>...</cert> key client.key # 客户端私钥的位置,<key>...</key> comp-lzo # 启用 LZO 压缩(兼容旧版客户端压缩,双方必须一致) verb 3 # 设置 OpenVPN 的日志详细级别 ;auth-user-pass # 启用用户名密码认证,如果服务端配置了此项 ;route-nopull # 取消从服务器拉取路由,手动指定路由信息 ;route 192.168.100.0 255.255.255.0 # 自定义路由,确保与服务端配置相匹配 script-security 2 # 启用脚本安全性,通常设置为2即可(不启用可能会无法访问服务器本机IP) # reneg-sec 0 # 设置用于重新协商密钥的时间间隔 # cipher AES-256-CBC # 设置加密算法为AES-256-CBC # auth SHA512 # 设置认证算法为SHA512 ``` ### 帐号认证形式 `/etc/openvpn/server.conf` 服务器端配置文件 ```bash # 指定 OpenVPN 使用的协议和端口 ;local 192.168.100.233 # 监听的本地IP地址 port 1194 # 默认端口是 1194 proto udp # tcp/udp proto udp6 # tcp6/udp6 dev tun # 指定使用的设备类型,三层路由IP隧道(tun)二层以太网隧道(tap) # 指定证书和密钥的位置 ca /easyrsa/pki/ca.crt # ca证书的位置# ca证书的位置 cert /easyrsa/pki/issued/server.crt # 服务端公钥的位置 key /easyrsa/pki/private/server.key # 服务端私钥的位置 dh /easyrsa/pki/dh.pem # 证书校验算法 # 指定 OpenVPN 使用的虚拟内网地址和子网掩码 server 10.8.0.0 255.255.255.0 # 给客户端分配的地址池 ifconfig-pool-persist ip.txt # 指定用于持久化存储客户端分配的 IP 地址的文件 # 推送给客户端的选项,例如将默认网关设置为 VPN 服务器 push "route 192.168.100.0 255.255.255.0" # 允许客户端访问的内网网段 ;push "redirect-gateway def1 bypass-dhcp" # 默认网关设置为 VPN 服务器 ;push "dhcp-option DNS 223.5.5.5" # 推送给客户端的 DNS 服务器 ;push "dhcp-option DNS 1.1.1.1" client-to-client # 允许客户端与客户端之间通信 # 保持连接活动的选项 keepalive 10 120 # 存活时间,10秒ping一次,120秒如果未收到响应则视为断开 max-clients 100 # 最多允许100个客户端连接 # OpenVPN 日志 status openvpn-status.log # OpenVPN 连接状态文件 verb 3 # 设置 OpenVPN 的日志详细级别 # 持久化 TUN/TAP 设备和密钥 persist-key # 通过keepalive检测超时后,重新启动VPN,不重新读取 persist-tun # 检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup duplicate-cn # 允许使用相同证书(禁用则需要每个客户端都要单独生成一个证书) comp-lzo # 启用 LZO 压缩(兼容旧版客户端压缩,双方必须一致) # 启用用户验证 auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env # 开启密码验证脚本 username-as-common-name # 使用客户提供的UserName作为Common Name verify-client-cert none # 不进行客户端证书验证(仅需CA证书即可) ;client-cert-not-required # 只使用用户密码方式验证登录(禁用则需要证书+用户名密码双重验证登录) script-security 3 # 该指令提供对OpenVPN使用外部程序和脚本的策略级别的控制 # 0- 完全不调用外部程序 # 1- (默认)仅调用内置可执行文件,例如ifconfig,ip,route或netsh # 2- 允许调用内置的可执行文件和用户定义的脚本 # 3- 允许通过环境变量将密码传递给脚本(可能不安全) # 特别注意如果没有这个配置项会导致服务端校验密码时无法获取到密码,导致校验失败 ``` `/etc/openvpn/check.sh` 登录验证脚本 `chmod +x /etc/openvpn/check.sh` 增加执行权限 ```bash #!/bin/bash PASSFILE="/etc/openvpn/openvpn-user.txt" # 密码文件,包含用户名和密码明文 LOG_FILE="/etc/openvpn/openvpn-password.log" # 记录用户登录情况的日志文件 TIME_STAMP=`date "+%Y-%m-%d %T"` # 时间 # 检查密码文件是否可读 if [ ! -r "${PASSFILE}" ]; then echo "${TIME_STAMP}: 无法读取密码文件 \"${PASSFILE}\"." >> ${LOG_FILE} exit 1 fi # 从密码文件中获取正确的密码 CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}` # 检查用户是否存在 if [ "${CORRECT_PASSWORD}" = "" ]; then echo "${TIME_STAMP}: 用户不存在:用户名=\"${username}\",密码=\"${password}\"." >> ${LOG_FILE} exit 1 fi # 检查密码是否正确 if [ "${password}" = "${CORRECT_PASSWORD}" ]; then echo "${TIME_STAMP}: 认证成功:用户名=\"${username}\"." >> ${LOG_FILE} exit 0 fi # 记录密码错误情况 echo "${TIME_STAMP}: 密码错误:用户名=\"${username}\",密码=\"${password}\"." >> ${LOG_FILE} exit 1 ``` `/etc/openvpn/openvpn-user.txt` OpenVPN 用户,空格为分隔符 ```bash <用户1> <密码(明码)> <用户2> <密码(明码)> ``` `client.ovpn` 客户端配置文件 ```bash client # 指定为客户端模式 dev tun # 指定使用的设备类型 proto udp # 使用UDP协议,也可以选择tcp remote blynk.space 1194 # OpenVPN服务器的域名/IP地址和端口号 resolv-retry infinite # 断开连接后自动重连,特别在网络不稳定时有用 ;persist-key # 如果使用keepalive检测到超时,则重新启动VPN,使用第一次生成的keys ;persist-tun # 检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup ;nobind # 大多数客户端不需要绑定到特定的本地端口号。 # 指定证书和密钥的位置,也可直接将证书和密钥的内容插入配置文件 ca ca.crt # CA证书的位置,<ca>...</ca> ;cert client.crt # 客户端证书的位置,<cert>...</cert> # 用户验证无需 ;key client.key # 客户端私钥的位置,<key>...</key> # 用户验证无需 comp-lzo # 启用 LZO 压缩(兼容旧版客户端压缩,双方必须一致) verb 3 # 设置 OpenVPN 的日志详细级别 auth-user-pass # 启用用户名密码认证,如果服务端配置了此项 ;route-nopull # 取消从服务器拉取路由,手动指定路由信息 ;route 192.168.100.0 255.255.255.0 # 自定义路由,确保与服务端配置相匹配 script-security 2 # 启用脚本安全性,通常设置为2即可(不启用可能会无法访问服务器本机IP) ;reneg-sec 0 # 设置用于重新协商密钥的时间间隔 ;cipher AES-256-CBC # 设置加密算法为AES-256-CBC ;auth SHA512 # 设置认证算法为SHA512 ``` ## 常见问题 ```bash # ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2) mkdir -p /dev/net mknod /dev/net/tun c 10 200 chmod 600 /dev/net/tun cat /dev/net/tun # 测试TUN/TAP设备是否可用: # 如果您收到消息cat: /dev/net/tun: File descriptor in bad state您的 TUN/TAP 设备已准备好使用 # 如果您收到消息cat: /dev/net/tun: No such device the TUN/TAP 设备未成功创建``` # 还有可能就是使用docker创建的,创建容器时增加 --cap-add=NET_ADMIN --device=/dev/net/tun # 在PVE下部署的话需要 nano /etc/pve/lxc/<CT的ID>.conf # PVE主机Shell运行,修改或添加下列内容 lxc.mount.entry: /dev/net dev/net none bind,create=dir lxc.cgroup2.devices.allow: c 10:200 rwm # 10:200 表示 net这个设备 # ls -l /dev/<设备名> # 可以查看指定设备的 主设备号:次设备号(*:* 全部设备) chown 100000:100000 /dev/net/tun # 允许非特权容器使用 # 安装了 openvpn 运行提示 "未找到命令",下列方式任选一个 /usr/sbin/openvpn --config /etc/openvpn/server.conf # 使用完整路径(临时) sudo ln -s /usr/sbin/openvpn /usr/local/bin/openvpn # 使用软链接修复(永久) export PATH=$PATH:/usr/sbin # 将/usr/sbin添加到$PATH(重新加载配置文件或重新启动终端后再试)(永久) ``` **相关教程:** [centos7部署easyrsa打通内网](https://www.cnblogs.com/forlive/p/16850177.html) [OpenVPN使用故障收录(含高阶使用)](https://developer.aliyun.com/article/976278) [CentOS 搭建 OpenVPN 服务,一次性成功!收藏了](https://cloud.tencent.com/developer/article/2315269) [OpenVPN_Docker_北京元枢](https://metahubs.cn/openvpn)
造物者W
2024年1月20日 11:53
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码