目錄表

安裝 OpenVPN Server(使用 PVE 內 CT Template)

安裝程序

  1. 建立 CT 時, 將 Unprivileged container 打勾取消
  2. 建立完成後, 查看 /var/log/syslog 會出現以下錯誤訊息

    [email protected]: Failed at step NAMESPACE spawning /usr/sbin/openvpn: Permission denied

  3. 只要在 Options → Features → Nesting 打勾並重新啟動 CT 即可解決
  • 如果 /var/log/syslog 出現以下的錯誤訊息

    ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2

    就表示建立 CT 時, 沒有將 Unprivileged container 打勾取消

  • 如果在 PVE7 上安裝, 需要特別執行以下程序 Exp. openvpn CT 的 id 是 133
    1. 修改 ct 設定檔內容, 最後兩行加上 lxc 的相關設定

      vi /etc/pve/lxc/133.conf

      :
      :
      ostype: debian
      rootfs: zfs-raid:subvol-133-disk-1,size=8G
      swap: 512
      lxc.cgroup2.devices.allow: c 10:200 rwm
      lxc.mount.entry: /dev/net dev/net none bind,create=dir
    2. 修改 tun 權限

      chown 100000:100000 /dev/net/tun

      確認權限是否修改成功

      # ls -l /dev/net/tun
      crw-rw-rw- 1 100000 100000 10, 200 Jun  3 16:37 /dev/net/tun

    3. 重新啟動 openvpn CT

      pct reboot 133

自訂 Open VPN Server

建立與取消 VPN 帳號

查詢管理性資訊

  • 如果想讓 OpenVPN 的 Listen Port 改為 443, 因為會與提供下載憑證的 lighttpd 衝突, 所以可以修改 SSL Port 為其他 port Exp. 20443
    • [舊版] 修改 /etc/lighttpd/lighttpd.conf 的設定

      vi /etc/lighttpd/lighttpd.conf

      :
      $SERVER["socket"] == ":80" {
          $HTTP["host"] =~ "(.*)" {
              url.redirect = ( "^/(.*)" => "https://%1/$1" )
          }
      }
      
      $SERVER["socket"] == ":20443" {
          ssl.engine = "enable"
          # Note using shared hardened SSL settings
          include "ssl-params.conf"
      :
    • [新版] 修改 /etc/lighttpd/conf-enabled/50-tklcp.conf

      vi /etc/lighttpd/conf-enabled/50-tklcp.conf

      :
      $SERVER["socket"] == ":80" {
          $HTTP["host"] =~ "(.*)" {
              url.redirect = ( "^/(.*)" => "https://%1/$1" )
          }
      }
      
      $SERVER["socket"] == ":20443" {
          ssl.engine = "enable"
          # Note using shared hardened SSL settings
          include "ssl-params.conf"
      :
      vi /etc/lighttpd/conf-enabled/10-ssl.conf
      :
      $SERVER["socket"] == "0.0.0.0:20443" {
          ssl.engine  = "enable"
      }
      :
      # support for IPv6 HTTPS via Debian script (in 'lighttpd' package)
      include_shell "/usr/share/lighttpd/use-ipv6.pl 20443"

      修改好重啟 lighttpd

      systemctl restart lighttpd.service
    • 修改 /var/www/openvpn/bin/addprofile 的 SERVER_ADDR 設定 Exp. 改成 172.16.0.246:20443

      vi /var/www/openvpn/bin/addprofile

      :
      #SERVER_ADDR=$(grep remote $OVPN_PATH | awk '{print $2;exit}')
      SERVER_ADDR="172.16.0.246:20443"
      :
    • Webmin 的 Firewall 也要設定開放該 Port Exp. TCP 20443
      • INPUT : Add Rule
      • Apply Configuration

設定 VPN Client 可以互相連線

安裝 snmpd 進行監控

安裝 openvpn-snmp-stats 強化監控

安裝 openvpn-monitor 強化監控

參考網址