文章介绍:PoleVPN是一个开源而强大的可应用于远程接入、局域网连接、IOT设备组网等多种应用场景,通过wss和h3s协议,规避ISP公网UDP协议QOS的问题,提供用户高速连接稳定访问特性,本期介绍使用PoleVPN使能SSLVPN功能,给电脑手机使用用于连接公司内网,可通过Web管理添加,修改,删除用户账号密码,并提供编辑,添加,删除用户IP绑定功能,以及重启服务功能,可满足日常运维使用。

一、项目介绍

PoleVPN 官网

企业级VPN

  • 部署配置方便,一键接入(支持记住账号密码)
  • 全程TLS 通信加密,安全可靠
  • 支持网桥功能,快速远程组网
  • 支持IOT 设备组网
  • 可以作为代理服务器
  • 全客户端支持(ios android,windows,macos,linux)
  • 支持流量控制,限速(全局,非单IP)
  • 支持本地账号密码,http接口,LDAP认证方式
  • 代码开源

为什么会有PoleVPN

  • 疫情期间远程办公,需要有VPN来接入公司,IDC资源
  • 跨国团队,VPN不能被GFW墙,用OpenVPN 会被墙(虽然可以通过其他隧道方式伪装)
  • 需要有网桥功能,路由功能,能够打通公司网络,测试环境网络,开发环境网络,方便开发人员调试开发
  • 配置不能太复杂(OpenVPN 安装,维护太复杂了)

二、安装部署

2.1、下载服务端

sudo apt install -y wget tar
sudo wget --no-check-certificate https://www.polevpn.com/download/polevpn_server.tgz

2.2、解压缩

tar -xzvf polevpn_server.tgz -C /opt

2.3、修改配置

说明:这里修改的是配置文件和初始化脚本文件,官方默认使用的tunip段是A类私网地址(10.8.0.0/16),如何和内网有冲突建议修改,我这里将使用运营商保留IP作为tunip(100.64.0.0/24),这样可以连接253台设备,如果你的终端设备数量较多,可以修改子网掩码为23或者更大子网。

2.3.1、进入目录

cd /opt/polevpn_server

2.3.2、修改config.json

如果没有nano命令,ubuntu/debian请运行:sudo apt install -y nano

nano config.json

yydy_2024-07-06_22-11-32

{
    "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

这里其实可以不执行,我们先说一下执行后的效果,当客户端拨号后访问内网时,源地址是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一致,否则不生效。

yydy_2024-07-06_21-49-40

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

sudo apt install -y iptables ufw
sudo /opt/polevpn_server/tools/init.sh

2.5、生成新证书

cd /opt/polevpn_server/tools && sudo ./createtls.sh

yydy_2024-07-06_22-09-41

2.6、以系统服务的形式运行

sudo cp /opt/polevpn_server/polevpn.service /etc/systemd/system

2.8、创建日志目录

sudo mkdir /opt/polevpn_server/logs

2.8、运行服务

2.8.1、开机自启

sudo systemctl enable polevpn

2.8.2、启动服务

sudo systemctl start polevpn

2.8.3、查看服务

sudo systemctl status polevpn

yydy_2024-07-06_22-29-39

2.8.4、停止服务

sudo systemctl stop polevpn

2.9、创建用户

nano /opt/polevpn_server/users.credentials

三、连接测试

3.1、windows

3.1.1、下载客户端

官网下载

3.1.2、管理员身份运行init.bat 安装虚拟网卡

3.1.3、双击运行PoleVPN.exe

3.1.4、配置客户端

  • 点击 + 号添加 AccessServer
  • name 随意填
  • endpoint 填wss://服务ip:端口 或者h3s://服务器ip:端口
  • user 用户名
  • pwd 密码
  • sni 建议填 www.speedtest.netwww.bing.comwww.apple.com,zoom.us,www.rri.ro 或者其他没有被block 的国外网站名字
  • 其他的全部默认保存配置,点击小飞机,启动vpn
Image 1 Image 2 Image 2

3.1.5、windwos客户端问题

如果以管理员身份运行init.bat 安装虚拟网卡后,双击运行PoleVPN.exe报错如下,请按照图片中的步骤解决。

yydy_2024-07-06_22-51-50

yydy_2024-07-06_23-04-45

3.2、安卓手机测试

3.2.1、下载客户端

官网下载

  • 点击 + 号添加 AccessServer
  • name 随意填
  • endpoint 填wss://服务ip:端口 或者h3s://服务器ip:端口
  • user 用户名
  • pwd 密码
  • sni 建议填 www.speedtest.netwww.bing.comwww.apple.com,zoom.us,www.rri.ro 或者其他没有被block 的国外网站名字
  • 其他的全部默认保存配置,点击小飞机,启动vpn
Image 1 Image 2 Image 3

3.3、其他客户端下载

官网下载

四、安装Web管理

4.1、更新系统

cd /root
sudo apt update

4.2、安装PIP

sudo apt install -y python3-pip

4.3、安装Flask

pip install flask

4.4、下载配置文件

wget -P /root https://alist.yydy.link:2023/d/%F0%9F%A7%A9Share---%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6/polevpn-web/polevpn-web.tar

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为系统服务

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 配置

sudo systemctl daemon-reload

4.8、启用服务,开机自启动

sudo systemctl enable polevpn-web

4.9、启动服务

sudo systemctl start polevpn-web

4.10、查看状态

sudo systemctl status polevpn-web

4.11、Web访问

打开http://ip:5000

yydy_2024-07-07_19-35-38

五、Nginx反代Web管理

Web代码是博主自己编译,可能有未知BUG,因本人不善于编译,所以谨慎发布到公网,如果发布公网造成资产损失,后果自负。
Web代码是博主自己编译,可能有未知BUG,因本人不善于编译,所以谨慎发布到公网,如果发布公网造成资产损失,后果自负。
Web代码是博主自己编译,可能有未知BUG,因本人不善于编译,所以谨慎发布到公网,如果发布公网造成资产损失,后果自负。

yydy_2024-07-07_19-53-44

yydy_2024-07-07_19-54-05

yydy_2024-07-07_19-54-33

yydy_2024-07-07_19-54-51

yydy_2024-07-07_19-55-04

yydy_2024-07-07_19-55-22

yydy_2024-07-07_19-55-42

六、服务器开启BBR

6.1、下载脚本

curl -sS -O https://kejilion.pro/kejilion.sh && chmod +x kejilion.sh && ./kejilion.sh

6.2、开启BBR

yydy_2024-07-07_20-26-08