凌峰创科服务平台

openvpn搭建免流服务器

OpenVPN搭建免流服务器是一个涉及网络配置和协议理解的技术过程,需要明确的是,“免流”通常指利用运营商网络规则的特殊配置实现流量减免,但需注意其合规性,以下内容仅从技术角度介绍OpenVPN服务器的搭建与配置方法,实际应用中请遵守当地法律法规及运营商服务协议。

openvpn搭建免流服务器-图1
(图片来源网络,侵删)

环境准备

搭建OpenVPN服务器需要一台具有公网IP的云服务器或VPS,操作系统推荐Linux(如Ubuntu 20.04),确保服务器已更新系统并安装必要的依赖包:

sudo apt update && sudo apt upgrade -y
sudo apt install -y openvpn easy-rsa openssl wget

关闭服务器的防火墙或放行OpenVPN默认端口(1194)及TCP/UDP流量,例如使用UFW:

sudo ufw allow 1194/udp
sudo ufw enable

生成CA证书与服务器密钥

  1. 初始化PKI环境
    make-cadir ~/openvpn-ca
    cd ~/openvpn-ca
    source vars
  2. 清除旧证书(首次跳过)
    ./clean-all
  3. 生成根证书
    ./build-ca

    过程中按提示输入国家、省份、组织等信息, Common Name可填服务器域名或IP。

  4. 生成服务器证书
    ./build-key-server server

    此处“server”为证书名称,生成时会询问签名,输入“y”及两次回车。

    openvpn搭建免流服务器-图2
    (图片来源网络,侵删)
  5. 生成Diffie-Hellman参数(增强安全性):
    ./build-dh

    此过程可能较慢,耐心等待完成。

创建客户端证书与配置文件

  1. 生成客户端证书(以“client1”为例):
    ./build-key client1

    同样需签名并确认。

  2. 生成TLS密钥(可选)
    openvpn --genkey --secret keys/ta.key

    用于增强认证安全性。

配置OpenVPN服务器

  1. 复制证书文件到OpenVPN配置目录
    sudo cp ~/openvpn-ca/keys/{ca.crt,server.crt,server.key,dh.pem} /etc/openvpn/
    sudo cp ~/openvpn-ca/keys/ta.key /etc/openvpn/  # 若生成TLS密钥
  2. 创建服务器配置文件
    sudo nano /etc/openvpn/server.conf

    写入以下基础配置(可根据需求调整):

    port 1194
    proto udp
    dev tun
    ca ca.crt
    cert server.crt
    key server.key
    dh dh.pem
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 8.8.8.8"
    keepalive 10 120
    tls-auth ta.key 0
    cipher AES-256-CBC
    auth SHA256
    comp-lzo no
    user nobody
    group nogroup
    persist-key
    persist-tun
    status openvpn-status.log
    verb 3
    explicit-exit-notify 1

    配置说明:

  • server:定义VPN虚拟网段,客户端将从此网段获取IP。
  • push redirect-gateway:强制客户端所有流量通过VPN。
  • push dhcp-option DNS:设置客户端DNS服务器,可改为公共DNS(如1.1.1.1)。
  • cipher:加密算法,AES-256-CBC为安全选择。
  1. 启动并设置开机自启
    sudo systemctl start openvpn@server
    sudo systemctl enable openvpn@server

配置IP转发与NAT

  1. 启用IP转发: 编辑/etc/sysctl.conf,取消注释net.ipv4.ip_forward=1,然后执行:
    sudo sysctl -p
  2. 配置iptables NAT规则
    sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    sudo iptables-save | sudo tee /etc/iptables/rules.v4

    (注:eth0为服务器公网网卡名称,可通过ip a查看)

生成客户端配置文件

  1. 创建客户端配置模板
    sudo mkdir -p ~/client-configs/files
    sudo cp /usr/share/doc/openvpn/examples/client.conf ~/client-configs/base.conf
    sudo nano ~/client-configs/base.conf
    client
    dev tun
    proto udp
    remote 服务器公网IP 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    remote-cert-tls server
    cipher AES-256-CBC
    auth SHA256
    comp-lzo no
    verb 3
    key-direction 1
  2. 复制客户端证书到配置目录
    sudo cp ~/openvpn-ca/keys/{ca.crt,client1.crt,client1.key} ~/client-configs/files/
  3. 生成客户端配置文件
    sudo nano ~/client-configs/make_config.sh

    写入脚本:

    #!/bin/bash
    # 首先安装easy-rsa(若未安装)
    # apt install easy-rsa
    client=$1
    base_dir=~/client-configs
    key_dir=~/openvpn-ca/keys
    cd $base_dir
    cp base.conf files/$client.conf
    echo "<ca>" >> files/$client.conf
    cat $key_dir/ca.crt >> files/$client.conf
    echo "</ca>" >> files/$client.conf
    echo "<cert>" >> files/$client.conf
    cat $key_dir/$client.crt >> files/$client.conf
    echo "</cert>" >> files/$client.conf
    echo "<key>" >> files/$client.conf
    cat $key_dir/$client.key >> files/$client.conf
    echo "</key>" >> files/$client.conf
    if [ -f $key_dir/ta.key ]; then
     echo "<tls-auth>" >> files/$client.conf
     cat $key_dir/ta.key >> files/$client.conf
     echo "</tls-auth>" >> files/$client.conf
    fi
    echo "Client $client configuration generated."

    赋予执行权限:

    sudo chmod +x ~/client-configs/make_config.sh

    生成客户端配置(以“client1”为例):

    sudo ~/client-configs/make_config.sh client1

    最终配置文件位于~/client-configs/files/client1.ovpn,可通过SFTP等工具下载到客户端设备。

客户端连接配置

  1. Windows客户端:安装OpenVPN GUI,将.ovpn文件放入config目录,连接时输入证书密码(若设置)。
  2. Android/iOS客户端:从应用商店安装OpenVPN Connect,导入.ovpn文件,连接即可。
  3. macOS客户端:使用Tunnelblick,导入配置文件并连接。

常见问题排查

  1. 连接失败:检查服务器防火墙、端口是否开放,证书是否正确配置。
  2. 无法上网:确认IP转发与iptables NAT规则是否生效,客户端DNS是否设置正确。
  3. 速度慢:尝试更换服务器节点,调整加密算法(如AES-128-CBC),或优化服务器网络带宽。

相关问答FAQs

Q1:OpenVPN服务器搭建后客户端无法连接,如何排查?
A:首先检查服务器日志(sudo journalctl -u openvpn@server)查看错误信息,常见原因包括:防火墙未放行端口、证书文件不匹配、客户端配置中服务器IP错误或端口错误,确认服务器公网IP是否可访问,可通过telnet 服务器IP 1194测试端口连通性。

Q2:如何限制客户端同时在线的数量?
A:在服务器配置文件server.conf中添加max-clients N(N为最大连接数,如max-clients 5限制5个客户端同时连接),若需基于证书限制,可使用ccd(客户端配置目录)为每个客户端分配固定IP并设置访问规则,创建/etc/openvpn/ccd/client1文件,写入ifconfig-push 10.8.0.2 255.255.255.255,同时通过client-config-dir指令启用该功能。

分享:
扫描分享到社交APP
上一篇
下一篇