差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版 前次修改
下次修改
前次修改
tech:pve_openvpn [2021/08/16 16:36] – [建立與取消 VPN 帳號] jonathantech:pve_openvpn [2023/10/29 00:44] (目前版本) jonathan
行 1: 行 1:
-====== PVE 內使用 CT Template 安裝 OpenVPN Server ======+====== 安裝 OpenVPN Server(使用 PVE 內 CT Template) ======
   * 採用 PVE 可下載的 CT Template - debian-10-turnkey-openvpn_16.1-1_amd64.tar.gz 來建立   * 採用 PVE 可下載的 CT Template - debian-10-turnkey-openvpn_16.1-1_amd64.tar.gz 來建立
  
行 16: 行 16:
 </WRAP> </WRAP>
  
 +<note warning>
 +  * 如果在 PVE7 上安裝, 需要特別執行以下程序 Exp. openvpn CT 的 id 是 133
 +    - 修改 ct 設定檔內容, 最後兩行加上 lxc 的相關設定<cli>
 +vi /etc/pve/lxc/133.conf</cli><file>
 +:
 +:
 +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
 +</file>
 +    - 修改 tun 權限 <cli>
 +chown 100000:100000 /dev/net/tun
 +</cli>確認權限是否修改成功<cli>
 +# ls -l /dev/net/tun
 +crw-rw-rw- 1 100000 100000 10, 200 Jun  3 16:37 /dev/net/tun
 +</cli>
 +    - 重新啟動 openvpn CT <cli>
 +pct reboot 133
 +</cli>
 +  
 +</note>
 ===== 自訂 Open VPN Server ===== ===== 自訂 Open VPN Server =====
   * 預設 UDP Listen Port : 1194 想改成 TCP Listen Port : 10443   * 預設 UDP Listen Port : 1194 想改成 TCP Listen Port : 10443
行 32: 行 55:
 service openvpn restart service openvpn restart
 </cli> </cli>
-  * 透過 Webmin 對主機防火牆要加入允許 TCP 10443 規則 \\ {{:tech:openvpn_03.png|}}+  * 透過直接修改 vi /etc/iptables.up.rules 然後重啟 iptables 或是登入 Webmin 對主機防火牆要加入允許 TCP 10443 規則 \\ {{:tech:openvpn_03.png|}} 
 +  * 修改 /usr/local/bin/openvpn-addclient 產生設定檔的預設值 <cli> 
 +
 +
 +#REMOTE_PORT='1194' 
 +REMOTE_PORT='10443' 
 +
 +
 +remote $SERVER_ADDR $REMOTE_PORT 
 +;proto udp 
 +proto tcp 
 +remote-cert-tls server 
 +
 +</cli>
  
 ===== 建立與取消 VPN 帳號 ===== ===== 建立與取消 VPN 帳號 =====
行 106: 行 142:
 INFO: revoked /etc/openvpn/easy-rsa/keys/jerry.ovpn INFO: revoked /etc/openvpn/easy-rsa/keys/jerry.ovpn
 </cli>++ </cli>++
 +===== 查詢管理性資訊 =====
 +  * 查看登入登出紀錄 <cli>cat /var/log/syslog | grep 'VERIFY OK: depth=0, CN=\| received, client-instance restarting'</cli>
 +  * 目前可用帳號 <cli>cat /etc/openvpn/easy-rsa/keys/index.txt | grep 'V'</cli>
 +  * 已廢止的帳號 <cli>cat /etc/openvpn/easy-rsa/keys/index.txt | grep 'R'</cli>
 +
 +<note tip>
 +  * 如果想讓 OpenVPN 的 Listen Port 改為 443, 因為會與提供下載憑證的 lighttpd 衝突, 所以可以修改 SSL Port 為其他 port Exp. 20443
 +    * [舊版] 修改 /etc/lighttpd/lighttpd.conf 的設定<cli>
 +vi /etc/lighttpd/lighttpd.conf
 +</cli><file>
 +:
 +$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"
 +:
 +</file>
 +    * [新版] 修改 /etc/lighttpd/conf-enabled/50-tklcp.conf <cli>
 +vi /etc/lighttpd/conf-enabled/50-tklcp.conf
 +</cli><file>
 +:
 +$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"
 +:
 +</file><cli>
 +vi /etc/lighttpd/conf-enabled/10-ssl.conf
 +</cli><file>
 +:
 +$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"
 +</file>修改好重啟 lighttpd<cli>
 +systemctl restart lighttpd.service
 +</cli>
 +    * 修改 /var/www/openvpn/bin/addprofile 的 SERVER_ADDR 設定 Exp. 改成 172.16.0.246:20443 <cli>
 +vi /var/www/openvpn/bin/addprofile
 +</cli><file>
 +:
 +#SERVER_ADDR=$(grep remote $OVPN_PATH | awk '{print $2;exit}')
 +SERVER_ADDR="172.16.0.246:20443"
 +:
 +</file>
 +    * Webmin 的 Firewall 也要設定開放該 Port Exp. TCP 20443
 +      * INPUT : Add Rule
 +      * Apply Configuration 
 +</note>
 +
 +===== 設定 VPN Client 可以互相連線 =====
 +  * 只要在 server.conf 內加入 client-to-client <cli>
 +cat /etc/openvpn/server.conf</cli><file>
 +root@ct-openvpn ~# cat /etc/openvpn/server.conf 
 +# PUBLIC_ADDRESS: vpn.iiidevops.org (used by openvpn-addclient)
 +
 +port 443
 +proto tcp
 +dev tun
 +
 +cipher AES-256-CBC
 +auth SHA256
 +
 +keepalive 10 120
 +:
 +:
 +client-config-dir /etc/openvpn/server.ccd
 +client-to-client
 +status /var/log/openvpn/server.log
 +:
 +</file>
 +  * 重新啟動 openvpn 讓設定生效<cli>
 +systemctl restart openvpn
 +</cli>
 +
 +===== 安裝 snmpd 進行監控 =====
 +  * 如果要將 openvpn server 啟用 snmpd 進行監控, 可以參考 [[tech/ubuntu_snmpd]]
 +  * 開啟主機防火牆 udp port 161 <cli>vi /etc/iptables.up.rules</cli><file>
 +:
 +*filter
 +:FORWARD ACCEPT [0:0]
 +:OUTPUT ACCEPT [0:0]
 +:INPUT DROP [0:0]
 +-A INPUT -i lo -j ACCEPT
 +-A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
 +-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 +:
 +-A INPUT -p udp -m udp --dport 161 -j ACCEPT 
 +:
 +</file>更改後重啟主機或是使用 iptable-restore 讓 firewall 生效<cli>
 +iptable-restore < /etc/iptables.up.rules
 +</cli>
 +
 +===== 安裝 openvpn-snmp-stats 強化監控 =====
 +  * 參考 - https://github.com/ThierryDi/-openvpn-snmp-stats
 +  * 安裝 openvpn.py <cli>
 +apt install sudo -y
 +mkdir -p /opt/openvpn-snmp-stats/db
 +cd /opt/openvpn-snmp-stats
 +wget https://raw.githubusercontent.com/ThierryDi/-openvpn-snmp-stats/main/openvpn.py
 +chmod a+x openvpn.py
 +visudo /etc/sudoers.d/openvpn-stats
 +</cli><file>
 +Debian-snmp ALL = NOPASSWD: /opt/openvpn-snmp-stats/openvpn.py
 +</file><cli>
 +vi /etc/snmp/snmpd.conf</cli><file>
 +:
 +group MyROGroup v2c iiidevops
 +
 +view    systemview    included   .1.3.6.1.2.1.1
 +view    systemview    included   .1.3.6.1.2.1.2
 +view    systemview    included   .1.3.6.1.2.1.25.1.1
 +view    systemview    included   .1.3.6.1.4.1.8072.1.3.2
 +:
 +extend wireguard /usr/bin/sudo /opt/openvpn-snmp-stats/openvpn.py
 +</file><cli>
 +ln -s /var/log/openvpn/server.log /var/log/openvpn/openvpn-status.log
 +systemctl restart snmpd.service
 +</cli>
 +  * 可以至 LibreNMS 針對這台主機開啟 Applications -> Wireguard 就可以出現類似以下的畫面 \\ {{:tech:2023-07-10_230252.png?1024|}} 
 +
 +===== 安裝 openvpn-monitor 強化監控 =====
 +  * 參考 - https://registry.hub.docker.com/r/ruimarinho/openvpn-monitor
 +  * 在 openvpn server 開啟監控服務 Port Exp. 5555<cli>
 +vi /etc/openvpn/server.conf
 +</cli><file>
 +:
 +status /var/log/openvpn/server.log
 +verb 4
 +management 0.0.0.0 5555
 +:
 +</file>
 +  * 重啟 openvpn server 讓設定生效, 可以使用 netstat 查看是否 port 5555 已經開啟<cli>
 +root@ct-devops-vpn ~# netstat -lntp | grep openvpn
 +tcp        0      0 0.0.0.0:5555            0.0.0.0:              LISTEN      88842/openvpn       
 +tcp        0      0 0.0.0.0:443             0.0.0.0:              LISTEN      88842/openvpn    
 +</cli>
 +  * 參考 [[tech:openvpn-monitor]] 
 +
 ===== 參考網址 ===== ===== 參考網址 =====
   * https://forum.proxmox.com/threads/openvpn-in-the-lxc.41889/   * https://forum.proxmox.com/threads/openvpn-in-the-lxc.41889/
 +  * https://blog.programster.org/openvpn-allow-clients-to-talk-to-each-other
 +  * https://pve.proxmox.com/wiki/OpenVPN_in_LXC
  
 {{tag>openvpn pve}} {{tag>openvpn pve}}
  • tech/pve_openvpn.1629103010.txt.gz
  • 上一次變更: 2021/08/16 16:36
  • jonathan