文章介绍:PoleVPN是一个开源而强大的可应用于远程接入、局域网连接、IOT设备组网等多种应用场景,通过wss和h3s协议,规避ISP公网UDP协议QOS的问题,提供用户高速连接稳定访问特性,本期介绍使用PoleVPN使能SSLVPN功能,给电脑手机使用用于连接公司内网,可通过Web管理添加,修改,删除用户账号密码,并提供编辑,添加,删除用户IP绑定功能,以及重启服务功能,可满足日常运维使用。
一、项目介绍 {#一-项目介绍}
企业级VPN
- 部署配置方便,一键接入(支持记住账号密码)
- 全程TLS 通信加密,安全可靠
- 支持网桥功能,快速远程组网
- 支持IOT 设备组网
- 可以作为代理服务器
- 全客户端支持(ios android,windows,macos,linux)
- 支持流量控制,限速(全局,非单IP)
- 支持本地账号密码,http接口,LDAP认证方式
- 代码开源
为什么会有PoleVPN
- 疫情期间远程办公,需要有VPN来接入公司,IDC资源
- 跨国团队,VPN不能被GFW墙,用OpenVPN 会被墙(虽然可以通过其他隧道方式伪装)
- 需要有网桥功能,路由功能,能够打通公司网络,测试环境网络,开发环境网络,方便开发人员调试开发
- 配置不能太复杂(OpenVPN 安装,维护太复杂了)
二、安装部署 {#二-安装部署}
2.1、下载服务端 {#2-1-下载服务端}
sudo apt install -y wget tar
sudo wget --no-check-certificate https://www.polevpn.com/download/polevpn_server.tgz
2.2、解压缩 {#2-2-解压缩}
tar -xzvf polevpn_server.tgz -C /opt
2.3、修改配置 {#2-3-修改配置}
说明:这里修改的是配置文件和初始化脚本文件,官方默认使用的tunip段是A类私网地址(10.8.0.0/16),如何和内网有冲突建议修改,我这里将使用运营商保留IP作为tunip(100.64.0.0/24),这样可以连接253台设备,如果你的终端设备数量较多,可以修改子网掩码为23或者更大子网。
2.3.1、进入目录 {#2-3-1-进入目录}
cd /opt/polevpn_server
2.3.2、修改config.json {#2-3-2-修改config-json}
如果没有nano命令,ubuntu/debian请运行:sudo apt install -y nano
nano config.json
{
"endpoint":{
"listen":"0.0.0.0:443",
"cert_file":"/opt/polevpn_server/keys/server.crt",
"key_file":"/opt/polevpn_server/keys/server.key"
},
"network_cidr":"100.64.0.0/24",
"dns":"10.225.97.6",
"client_routes":["1.0.0.0/8", "2.0.0.0/7", "4.0.0.0/6", "8.0.0.0/5", "16.0.0.0/4", "32.0.0.0/3", "64.0.0.0/2", "128.0.0.0/1"],
"server_routes":[],
"bind_ips":[],
"up_traffic_limit":1073741824,
"down_traffic_limit":1073741824,
"auth":{
"file":{
"path":"/opt/polevpn_server/users.credentials"
}
}
}
2.3.3、修改init.sh {#2-3-3-修改init-sh}
这里其实可以不执行,我们先说一下执行后的效果,当客户端拨号后访问内网时,源地址是100.64.0.0/24段,到了polevpn服务器后会被nat成服务器的上网口ip访问内网或者出局上网,这样其实内网如果有审计设备,或者安全设备,就无法审计具体是那个客户端访问的流量了,因为全部都被nat成服务器上网网卡的地址了,如果这里不执行,就必须在内网写回程路由到polevpn服务器,并且如果客户端通过polevpn服务器所在的internet上网,还需要在出口路由器上配置snat让拨号客户端可以正常上网,我们这里演示执行初始化。
cd /opt/polevpn_server/tools && nano init.sh
需要把nat的网段修改成和config.json中network_cidr一致,否则不生效。
echo 1 > /proc/sys/net/ipv4/ip_forward
sudo sysctl -w net.core.rmem_max=6500000
iptables -t nat -A POSTROUTING -s 100.64.0.0/24 -j MASQUERADE
ufw disable
2.4、执行init.sh {#2-4-执行init-sh}
sudo apt install -y iptables ufw
sudo /opt/polevpn_server/tools/init.sh
2.5、生成新证书 {#2-5-生成新证书}
cd /opt/polevpn_server/tools && sudo ./createtls.sh
2.6、以系统服务的形式运行 {#2-6-以系统服务的形式运行}
sudo cp /opt/polevpn_server/polevpn.service /etc/systemd/system
2.8、创建日志目录 {#2-8-创建日志目录}
sudo mkdir /opt/polevpn_server/logs
2.8、运行服务 {#2-8-运行服务}
2.8.1、开机自启 {#2-8-1-开机自启}
sudo systemctl enable polevpn
2.8.2、启动服务 {#2-8-2-启动服务}
sudo systemctl start polevpn
2.8.3、查看服务 {#2-8-3-查看服务}
sudo systemctl status polevpn
2.8.4、停止服务 {#2-8-4-停止服务}
sudo systemctl stop polevpn
2.9、创建用户 {#2-9-创建用户}
nano /opt/polevpn_server/users.credentials
三、连接测试 {#三-连接测试}
3.1、windows {#3-1-windows}
3.1.1、下载客户端 {#3-1-1-下载客户端}
3.1.2、管理员身份运行init.bat
安装虚拟网卡 {#3-1-2-管理员身份运行-安装虚拟网卡}
3.1.3、双击运行PoleVPN.exe
{#3-1-3-双击运行}
3.1.4、配置客户端 {#3-1-4-配置客户端}
- 点击 + 号添加 AccessServer
- name 随意填
- endpoint 填wss://服务ip:端口 或者h3s://服务器ip:端口
- user 用户名
- pwd 密码
- sni 建议填 www.speedtest.net,www.bing.com,www.apple.com,zoom.us,www.rri.ro 或者其他没有被block 的国外网站名字
- 其他的全部默认保存配置,点击小飞机,启动vpn
3.1.5、windwos客户端问题 {#3-1-5-windwos客户端问题}
如果以管理员身份运行init.bat
安装虚拟网卡后,双击运行PoleVPN.exe
报错如下,请按照图片中的步骤解决。
3.2、安卓手机测试 {#3-2-安卓手机测试}
3.2.1、下载客户端 {#3-2-1-下载客户端}
- 点击 + 号添加 AccessServer
- name 随意填
- endpoint 填wss://服务ip:端口 或者h3s://服务器ip:端口
- user 用户名
- pwd 密码
- sni 建议填 www.speedtest.net,www.bing.com,www.apple.com,zoom.us,www.rri.ro 或者其他没有被block 的国外网站名字
- 其他的全部默认保存配置,点击小飞机,启动vpn
3.3、其他客户端下载 {#3-3-其他客户端下载}
四、安装Web管理 {#四-安装Web管理}
4.1、更新系统 {#4-1-更新系统}
cd /root
sudo apt update
4.2、安装PIP {#4-2-安装PIP}
sudo apt install -y python3-pip
4.3、安装Flask {#4-3-安装Flask}
pip install flask
4.4、下载配置文件 {#4-4-下载配置文件}
wget -P /root https://pan.yydy.link:2023/d/share/polevpn-web/polevpn-web.tar
4.5、解压文件 {#4-5-解压文件}
tar -xvf polevpn-web.tar -C /opt/polevpn_server
cd /opt/polevpn_server/
mv polevpn-web/* ./
rm -rf polevpn-web
chmod 664 static
chmod 664 templates
4.6、配置polevpn-web为系统服务 {#4-6-配置polevpn-web为系统服务}
nano /etc/systemd/system/polevpn-web.service
[Unit]
Description=Flask App
After=network.target
\[Service\]
User=root
WorkingDirectory=/opt/polevpn_server
ExecStart=/usr/bin/python3 /opt/polevpn_server/web.py
Restart=always
`[Install]
WantedBy=multi-user.target
`
4.7、重新加载 systemd 配置 {#4-7-重新加载-systemd-配置}
sudo systemctl daemon-reload
4.8、启用服务,开机自启动 {#4-8-启用服务-开机自启动}
sudo systemctl enable polevpn-web
4.9、启动服务 {#4-9-启动服务}
sudo systemctl start polevpn-web
4.10、查看状态 {#4-10-查看状态}
sudo systemctl status polevpn-web
4.11、Web访问 {#4-11-Web访问}
打开http://ip:5000
五、Nginx反代Web管理 {#五-Nginx反代Web管理}
Web代码是博主自己编译,可能有未知BUG,因本人不善于编译,所以谨慎发布到公网,如果发布公网造成资产损失,后果自负。
Web代码是博主自己编译,可能有未知BUG,因本人不善于编译,所以谨慎发布到公网,如果发布公网造成资产损失,后果自负。
Web代码是博主自己编译,可能有未知BUG,因本人不善于编译,所以谨慎发布到公网,如果发布公网造成资产损失,后果自负。
六、服务器开启BBR {#六-服务器开启BBR}
6.1、下载脚本 {#6-1-下载脚本}
curl -sS -O https://kejilion.pro/kejilion.sh && chmod +x kejilion.sh && ./kejilion.sh