็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿง Linux OpenVPN Server ๆžถ่จญๅฎŒๆ•ดๆŒ‡ๅ—:PKI ๆ†‘่ญ‰、้›™ๅ‘้ฉ—่ญ‰、Client ้…็ฝฎ่ˆ‡่ทฏ็”ฑๅฐŽๅ‘ไธ€ๆฌกๆžๆ‡‚

    ๐Ÿง Linux OpenVPN Server ๆžถ่จญๅฎŒๆ•ดๆŒ‡ๅ—:PKI ๆ†‘่ญ‰、้›™ๅ‘้ฉ—่ญ‰、Client ้…็ฝฎ่ˆ‡่ทฏ็”ฑๅฐŽๅ‘ไธ€ๆฌกๆžๆ‡‚

    ๅœจไผๆฅญ็’ฐๅขƒ่ฃก,ๅฎ‰ๅ…จๅˆๅฅฝ็ถญ่ญท็š„้ ็ซฏ้€ฃ็ทšๆ–นๆกˆ ๅนพไนŽๆ˜ฏๆจ™้…,ๅ…ถไธญๆœ€ๅธธ่ฆ‹็š„ๅฐฑๆ˜ฏๅŸบๆ–ผ TLS ็š„ OpenVPN SSL VPN。ๅฎƒ้€้Ž PKI ๆ†‘่ญ‰ ๅฏฆไฝœ้›™ๅ‘้ฉ—่ญ‰,ๆญ้…้ˆๆดป็š„่ทฏ็”ฑ่จญ่จˆ, ๅฏไปฅๆŠŠ็ธฝ้ƒจๅ…ง็ถฒๅฎ‰ๅ…จๅœฐ「ๅปถไผธ」ๅˆฐ้ ็ซฏ่พฆๅ…ฌๅฎค、ๅฑ…ๅฎถ VPN ไฝฟ็”จ่€…、็”š่‡ณ่กŒๅ‹•่ฃ็ฝฎ。

    ้€™็ฏ‡ๆœƒๅพžๆžถๆง‹ๆฆ‚ๅฟต → ๅฎ‰่ฃ่จญๅฎš → ๆ†‘่ญ‰็ฎก็† → Client ่จญๅฎš → ่ทฏ็”ฑๅฐŽๅ‘่ˆ‡ๅฎ‰ๅ…จๅผทๅŒ– ไธ€ๆข้พๅธถ้Ž, ่ฎ“ไฝ ่ƒฝๅœจ Linux ไธŠ้ƒจ็ฝฒไธ€ๅฅ—ๅฏๅฏฆๆˆฐไฝฟ็”จ็š„ OpenVPN Server。

    ๐Ÿ“‘ ็›ฎ้Œ„

    ไธ€、OpenVPN ่ˆ‡ SSL VPN ๆฆ‚ๅฟตๆ•ด็†

    OpenVPN ๆ˜ฏๅŸบๆ–ผ OpenSSL / TLS ็š„ VPN ๅฏฆไฝœ,่ตฐๅœจ TCP/UDP ไน‹ไธŠ, ้€้Ž ๆ†‘่ญ‰่ˆ‡้‡‘้‘ฐ ๅฐ้›™ๆ–น้€ฒ่กŒ่บซๅˆ†้ฉ—่ญ‰่ˆ‡ๅŠ ๅฏ†ๆบ้€š。ๅธธ่ฆ‹ๅฐๆฏ”:

    • IPsec VPN:ๅœจ IP ๅฑค้‹ไฝœ,้ฉๅˆ็ซ™ๅฐ็ซ™(Site-to-Site)่ˆ‡็กฌ้ซ”่จญๅ‚™ๆ•ดๅˆ。
    • SSL VPN(OpenVPN):ๅœจ TCP/UDP ๅฑค้‹ไฝœ,่ผƒๅฎนๆ˜“็ฉฟ้€้˜ฒ็ซ็‰†่ˆ‡ Proxy,ๅฐ End-User ๅ‹ๅ–„。

    OpenVPN ็š„ๅนพๅ€‹้—œ้ต็‰นๆ€ง:

    • PKI ้›™ๅ‘้ฉ—่ญ‰:Client ่ˆ‡ Server ้ƒฝๆŒๆœ‰ๆ†‘่ญ‰,้ฟๅ…ๅธณ่™Ÿๅฏ†็ขผๆดฉๆผ้ขจ้šช。
    • ๅฝˆๆ€งๆ‹“ๆจธ:ๆ”ฏๆด tun(ไธ‰ๅฑค่ทฏ็”ฑ)่ˆ‡ tap(ไบŒๅฑคๆฉ‹ๆŽฅ)。
    • ่ทจๅนณๅฐ:Linux / Windows / macOS / Android / iOS ้ƒฝๆœ‰ Client。
    • ๅฎนๆ˜“ๆญ้…ๆ—ขๆœ‰้˜ฒ็ซ็‰†:ๅฏไฝฟ็”จ 1194/UDP,ไนŸๅฏ็›ดๆŽฅ่ท‘ๅœจ 443/TCP。

    ไบŒ、็’ฐๅขƒๅ‡่จญ่ˆ‡ๆ‹“ๆจธๆžถๆง‹

    ไปฅไธ‹็”จไธ€ๅ€‹ๅธธ่ฆ‹็š„ไธญๅฐไผๆฅญๅ ดๆ™ฏไฝœ็‚บ็คบๆ„:

            Internet
               |
        [ ๅ…ฌ็ถฒ IP: 1.2.3.4 ]
            OpenVPN Server (Linux)
            LAN: 192.168.10.0/24
               |
      ┌────────┴─────────┐
      |                  |
    ๅ…ง้ƒจไธปๆฉŸ A       ๆช”ๆกˆไผบๆœๅ™จ、AD、GitLab ...
    • OpenVPN Server:Linux(ไพ‹ๅฆ‚ Ubuntu 22.04),LAN ไป‹้ข 192.168.10.10
    • VPN ็ถฒๆฎต10.8.0.0/24 ๅˆ†้…็ตฆ้ ็ซฏ Client。
    • Client ้œ€ๆฑ‚
      • ้€ฃ็ทšๅพŒๅฏๅญ˜ๅ–ๅ…ฌๅธๅ…ง็ถฒ 192.168.10.0/24
      • ้ƒจๅˆ†ไฝฟ็”จ่€…้œ€่ฆ「ๅ…จ้€š้“」ไธŠ็ถฒ่ตฐๅ…ฌๅธๅ‡บๅฃ;ๅ…ถไป–ไบบๅชๅฐŽๅ…ง็ถฒ。

    ไธ‰、OpenVPN ่ˆ‡ easy-rsa ๅฎ‰่ฃ

    ไปฅไธ‹ไปฅ Debian/Ubuntu ็ณปๅˆ—็‚บไพ‹,ๅ…ถไป–็™ผ่กŒ็‰ˆๅฏๅฐๆ‡‰ๆ›ฟๆ›ๅฅ—ไปถๅ็จฑ。

    # ๆ›ดๆ–ฐๅฅ—ไปถๅบซ
    sudo apt update
    
    # ๅฎ‰่ฃ OpenVPN ่ˆ‡ easy-rsa(PKI ๅทฅๅ…ท)
    sudo apt install -y openvpn easy-rsa

    ๅฎ‰่ฃๅพŒไธป่ฆๆช”ๆกˆไฝ็ฝฎ:

    • /usr/sbin/openvpn:OpenVPN ไผบๆœๅ™จ็จ‹ๅผ。
    • /etc/openvpn/:้ ่จญ่จญๅฎš、ๆ†‘่ญ‰ๅญ˜ๆ”พไฝ็ฝฎ。
    • /usr/share/easy-rsa/:easy-rsa ็ฏ„ๆœฌ่…ณๆœฌ。

    ๅ››、PKI ๆžถ่จญ:CA、Server ่ˆ‡ Client ๆ†‘่ญ‰

    ๅปบ่ญฐไฝฟ็”จ ็จ็ซ‹็›ฎ้Œ„ ไพ†็ฎก็† PKI ๆ†‘่ญ‰,้ฟๅ…ๆทท้›œ。ไปฅไธ‹็คบ็ฏ„ไปฅ easy-rsa 3 ๆžถ่จญ่‡ชๅปบ CA:

    # ๅปบ็ซ‹ PKI ็›ฎ้Œ„
    mkdir -p ~/openvpn-pki
    cd ~/openvpn-pki
    
    # ่ค‡่ฃฝ easy-rsa ่…ณๆœฌ
    cp -r /usr/share/easy-rsa/* .
    
    # ๅˆๅง‹ๅŒ– PKI
    ./easyrsa init-pki
    
    # ๅปบ็ซ‹ CA(ๆœƒ่ฉขๅ•ๅฏ†็ขผ่ˆ‡ CN)
    ./easyrsa build-ca
    
    # ๅปบ็ซ‹ Server ๆ†‘่ญ‰่ˆ‡้‡‘้‘ฐ
    ./easyrsa gen-req server nopass
    ./easyrsa sign-req server server
    
    # ๅปบ็ซ‹ Client ๆ†‘่ญ‰่ˆ‡้‡‘้‘ฐ(ๅฏ็‚บๆฏไฝ็”จๆˆถๅปบ็ซ‹ไธ€็ต„)
    ./easyrsa gen-req client01 nopass
    ./easyrsa sign-req client client01
    
    # ็”ข็”Ÿ Diffie-Hellman ๅƒๆ•ธ(ๅช้œ€ไธ€ๆฌก)
    ./easyrsa gen-dh
    
    # ๅปบ็ซ‹ CRL(ๆ†‘่ญ‰ๅปขๆญขๆธ…ๅ–ฎ)
    ./easyrsa gen-crl

    ๅฎŒๆˆๅพŒไฝ ๆœƒๅพ—ๅˆฐไปฅไธ‹้‡่ฆๆช”ๆกˆ:

    • pki/ca.crt:CA ๆ†‘่ญ‰(็ตฆๆ‰€ๆœ‰็ซฏ้ปžไฝฟ็”จ)。
    • pki/issued/server.crt:Server ๆ†‘่ญ‰。
    • pki/private/server.key:Server ้‡‘้‘ฐ(ๅ‹™ๅฟ…ๅฆฅๅ–„ไฟ่ญท)。
    • pki/issued/client01.crt ่ˆ‡ pki/private/client01.key:Client ๆ†‘่ญ‰่ˆ‡้‡‘้‘ฐ。
    • pki/dh.pem:Diffie-Hellman ๅƒๆ•ธ。
    • pki/crl.pem:ๆ†‘่ญ‰ๅปขๆญขๆธ…ๅ–ฎ。

    ๆŽฅ่‘—ๅฐ‡้€™ไบ›ๆช”ๆกˆ่ค‡่ฃฝๅˆฐ OpenVPN ็›ฎ้Œ„:

    sudo cp pki/ca.crt /etc/openvpn/
    sudo cp pki/issued/server.crt /etc/openvpn/
    sudo cp pki/private/server.key /etc/openvpn/
    sudo cp pki/dh.pem /etc/openvpn/
    sudo cp pki/crl.pem /etc/openvpn/

    ๅฆ‚ๆžœ่ฆไฝฟ็”จ tls-auth / tls-crypt ไพ†้˜ฒ่ญทๆŽƒๆ,ๅฏๅ†็”ข็”Ÿไธ€็ต„้‡‘้‘ฐ:

    # ็”ข็”Ÿๅ…ฑไบซ้‡‘้‘ฐ,็”จๆ–ผ tls-auth ๆˆ– tls-crypt
    sudo openvpn --genkey secret /etc/openvpn/ta.key

    ไบ”、Server ็ซฏ่จญๅฎš:ๅŸ ่™Ÿ、ๅŠ ๅฏ†、่ทฏ็”ฑ่ˆ‡้›™ๅ‘้ฉ—่ญ‰

    ๅคง้ƒจๅˆ†็™ผ่กŒ็‰ˆๆœƒไฝฟ็”จ /etc/openvpn/server.conf ๆˆ– server/server.conf ไฝœ็‚บ Server ่จญๅฎšๆช”。ไธ‹ๆ–นๆ˜ฏไธ€ๅ€‹ๅธธ่ฆ‹็š„็ฏ„ไพ‹:

    ๐Ÿ“„ ็ฏ„ไพ‹:/etc/openvpn/server.conf
    port 1194
    proto udp
    dev tun
    
    # ๆ†‘่ญ‰่ˆ‡้‡‘้‘ฐ
    ca /etc/openvpn/ca.crt
    cert /etc/openvpn/server.crt
    key /etc/openvpn/server.key
    dh /etc/openvpn/dh.pem
    
    # ๅฏ้ธ:้˜ฒๆŽƒๆ่ˆ‡ DoS(Client ็ซฏไบฆ้œ€่จญๅฎš)
    tls-auth /etc/openvpn/ta.key 0
    # ๆˆ–ไฝฟ็”จ tls-crypt
    # tls-crypt /etc/openvpn/ta.key
    
    # ๅŠ ๅฏ†่ˆ‡่ช่ญ‰
    cipher AES-256-GCM
    auth SHA256
    tls-version-min 1.2
    remote-cert-eku "TLS Web Client Authentication"
    
    # VPN ็ถฒๆฎต
    server 10.8.0.0 255.255.255.0
    
    # ๅ‘ Client push ็š„่จญๅฎš:DNS ่ˆ‡ๅ…ง็ถฒ่ทฏ็”ฑ
    push "redirect-gateway def1 bypass-dhcp"   # ๅ…จ้€š้“(ๅฏไพ้œ€่ฆ่ชฟๆ•ด)
    push "route 192.168.10.0 255.255.255.0"
    push "dhcp-option DNS 192.168.10.10"
    
    # ๅ•Ÿ็”จ Client ้–“ไบ’้€š(ๅฆ‚ไธ้œ€่ฆๅฏ่จป่งฃ)
    client-to-client
    
    # ไฟ็•™ Client IP ๆ˜ ๅฐ„(้œๆ…‹ๅˆ†้…ๅฏๆญ้… ccd)
    ifconfig-pool-persist /etc/openvpn/ipp.txt
    
    # ๆฌŠ้™่ˆ‡ๅฎ‰ๅ…จ
    user nobody
    group nogroup
    persist-key
    persist-tun
    
    # ๆ—ฅ่ชŒ่ˆ‡็‹€ๆ…‹
    status /var/log/openvpn-status.log
    log-append /var/log/openvpn.log
    verb 3
    
    # ๆ†‘่ญ‰ๅปขๆญขๆธ…ๅ–ฎ(CRL)
    crl-verify /etc/openvpn/crl.pem

    ๅ•Ÿ็”จไธฆ่จญ็‚บ้–‹ๆฉŸ่‡ชๅ‹•ๅ•Ÿๅ‹•:

    # Systemd ๆœๅ‹™ๅ็จฑๅœจไธๅŒ็™ผ่กŒ็‰ˆๅฏ่ƒฝ็•ฅๆœ‰ๅทฎ็•ฐ
    sudo systemctl enable --now openvpn@server.service
    
    # ็ขบ่ชๆœๅ‹™็‹€ๆ…‹
    sudo systemctl status openvpn@server.service

    ๅ…ญ、้˜ฒ็ซ็‰†่ˆ‡ IP ่ฝ‰้€่จญๅฎš(iptables / nftables)

    1. ๅ•Ÿ็”จ IP Forwarding(็ณป็ตฑๅฑค)

    # ่‡จๆ™‚ๅ•Ÿ็”จ(้‡้–‹ๆฉŸๅพŒๆœƒๅคฑๆ•ˆ)
    sudo sysctl -w net.ipv4.ip_forward=1
    
    # ๆฐธไน…ๅ•Ÿ็”จ
    echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p

    2. iptables ็ฏ„ไพ‹(NAT ่ˆ‡ๅ…่จฑ 1194/UDP)

    # ๅ…่จฑ VPN ้€ฃ็ทšๅŸ 
    sudo iptables -A INPUT -p udp --dport 1194 -j ACCEPT
    
    # ๅฐ VPN ็ถฒๆฎตๅš NAT,้€้Ž eth0 ๅฐๅค–ไธŠ็ถฒ
    # ่ซ‹ๅฐ‡ eth0 ๆ›ฟๆ›็‚บๅฏฆ้š›ๅฐๅค–็ถฒๅกๅ็จฑ
    sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    
    # ่ฆ–้œ€ๆฑ‚ๅ…่จฑๅ…ง้ƒจ็ถฒๆฎต่จชๅ•
    sudo iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
    sudo iptables -A FORWARD -d 10.8.0.0/24 -j ACCEPT
    
    # ๅญ˜ๆช”(Ubuntu ๅฏ็”จ)
    sudo apt install -y iptables-persistent
    sudo netfilter-persistent save

    3. nftables ็ฏ„ไพ‹(่‹ฅๅทฒๅ…จ้ขไฝฟ็”จ nft)

    table ip nat {
      chain postrouting {
        type nat hook postrouting priority 100;
        oif "eth0" ip saddr 10.8.0.0/24 counter masquerade
      }
    }
    
    table ip filter {
      chain input {
        type filter hook input priority 0;
        iif "eth0" udp dport 1194 accept
      }
    
      chain forward {
        type filter hook forward priority 0;
        ip saddr 10.8.0.0/24 accept
        ip daddr 10.8.0.0/24 accept
      }
    }

    ไธƒ、Client ่จญๅฎš:.ovpn ๆช”、่ทจๅนณๅฐไฝฟ็”จ

    ๅปบ่ญฐ็‚บๆฏไฝไฝฟ็”จ่€…็”ข็”Ÿไธ€ไปฝ ๅฐˆๅฑฌ .ovpn ๆช”ๆกˆ,ๅฐ‡ๆ†‘่ญ‰่ˆ‡้‡‘้‘ฐๅ…งๅตŒ, ๆ–นไพฟ็›ดๆŽฅๅŒฏๅ…ฅ OpenVPN ๅฎขๆˆถ็ซฏ。

    1. ็ต„ๅˆ Client ๆ‰€้œ€ๆช”ๆกˆ

    • ca.crt
    • client01.crt
    • client01.key
    • ta.key(่‹ฅ Server ไฝฟ็”จ tls-auth / tls-crypt)

    2. Client ่จญๅฎšๆช”็ฏ„ไพ‹:client01.ovpn

    ๐Ÿ“„ ็ฏ„ไพ‹:client01.ovpn
    client
    dev tun
    proto udp
    remote 1.2.3.4 1194    # 1.2.3.4 ่ซ‹ๆ›ๆˆไฝ ็š„ๅ…ฌ็ถฒ IP ๆˆ– FQDN
    resolv-retry infinite
    nobind
    
    persist-key
    persist-tun
    
    cipher AES-256-GCM
    auth SHA256
    remote-cert-tls server
    
    # ่‹ฅ Server ไฝฟ็”จ tls-auth
    key-direction 1
    
    verb 3
    
    <ca>
    -----BEGIN CERTIFICATE-----
    (่ฒผไธŠ ca.crt ๅ…งๅฎน)
    -----END CERTIFICATE-----
    </ca>
    
    <cert>
    -----BEGIN CERTIFICATE-----
    (่ฒผไธŠ client01.crt ๅ…งๅฎน)
    -----END CERTIFICATE-----
    </cert>
    
    <key>
    -----BEGIN PRIVATE KEY-----
    (่ฒผไธŠ client01.key ๅ…งๅฎน)
    -----END PRIVATE KEY-----
    </key>
    
    <tls-auth>
    (่ฒผไธŠ ta.key ๅ…งๅฎน)
    </tls-auth>

    3. ๅ„ๅนณๅฐไฝฟ็”จๆ–นๅผ็ฐก่ฟฐ

    • Windows:ๅฎ‰่ฃ「OpenVPN GUI」,ๅฐ‡ client01.ovpn ๆ”พๅˆฐ C:\Program Files\OpenVPN\config,ไปฅ็ณป็ตฑๅŒฃๅœ–็คบ้€ฃ็ทš。
    • macOS:ไฝฟ็”จ Tunnelblick ๆˆ– Viscosity,็›ดๆŽฅๅŒฏๅ…ฅ .ovpn ๆช”。
    • Linux ๆกŒ้ข:ๅฏไฝฟ็”จ NetworkManager ๅค–ๆŽ›,ๆˆ–็›ดๆŽฅ sudo openvpn --config client01.ovpn
    • Android / iOS:ๅฎ‰่ฃ「OpenVPN Connect」ๆˆ–「OpenVPN for Android」,้€้Žๆช”ๆกˆๆˆ– QR Code ๅŒฏๅ…ฅ。

    ๅ…ซ、่ทฏ็”ฑๅฐŽๅ‘ๅฏฆๆˆฐ:ๅ…จ้€š้“、ๅˆ†ๆต、ๅชๅฐŽๅ…ง็ถฒ

    OpenVPN ็š„่ทฏ็”ฑๅฐŽๅ‘ๆ˜ฏๅฏฆๅ‹™ไธŠ็š„้—œ้ต,ๆฑบๅฎš「Client ้€ฃ็ทšๅพŒๆต้‡ๅฆ‚ไฝ•่ตฐ」。ๅธธ่ฆ‹ไธ‰็จฎๆจกๅผ:

    1. ๅ…จ้€š้“(ๅ…จๆต้‡่ตฐ VPN)

    Server ็ซฏ server.conf ไธญไฝฟ็”จ:

    push "redirect-gateway def1 bypass-dhcp"

    ๆ‰€ๆœ‰ Client ็š„้ ่จญ่ทฏ็”ฑๆœƒๆ”น็‚บๆŒ‡ๅ‘ VPN,้ฉๅˆ้œ€่ฆ็ตฑไธ€ๅ‡บๅฃ็ฎกๆŽง(ไพ‹ๅฆ‚ไธŠ็ถฒ้Žๆฟพ、้›†ไธญๆชขๆธฌ)็š„ๆƒ…ๅขƒ。

    2. ๅˆ†ๆต:ๅชๅฐŽๅ…ง็ถฒ,ๅ…ถ้ค˜่ตฐๆœฌๅœฐ ISP

    ไธไฝฟ็”จ redirect-gateway,ๅช Push ๅ…ง้ƒจ็ถฒๆฎต:

    # server.conf ็‰‡ๆฎต
    push "route 192.168.10.0 255.255.255.0"

    ้€™ๆจฃ Client ๅชๆœ‰ๅœจๅญ˜ๅ–ๅ…ฌๅธๅ…ง็ถฒๆ™‚ๆ‰็ถ“้Ž VPN,็€่ฆฝไธ€่ˆฌ็ถฒ็ซ™ๅ‰‡่ตฐ่‡ชๅทฑๆœฌๅœฐ็š„็ถฒ่ทฏ。

    3. ้€ฒ้šŽ:ไพไฝฟ็”จ่€…ๅˆ†็ต„ๅˆ†ๆต

    ่‹ฅ่ฆๆŸไบ›ไฝฟ็”จ่€…ๅ…จ้€š้“、ๆŸไบ›ไฝฟ็”จ่€…ๅชๅฐŽๅ…ง็ถฒ,ๅฏๆญ้… Client-Specific Configuration(CCD)

    # server.conf
    client-config-dir /etc/openvpn/ccd
    
    # /etc/openvpn/ccd/client01
    # ๅฐˆๅฑฌ็ตฆ client01 ็š„่จญๅฎš,ๅฏไปฅ้กๅค– push ่ทฏ็”ฑ
    push "redirect-gateway def1 bypass-dhcp"
    
    # /etc/openvpn/ccd/client02
    # ๅชๅฐŽๅ…ง็ถฒ
    push "route 192.168.10.0 255.255.255.0"

    ไน、ๅฎ‰ๅ…จๅผทๅŒ–ๆธ…ๅ–ฎ:ๅŠ ๅฏ†、ๆฌŠ้™、ๆ†‘่ญ‰่ˆ‡ๆ—ฅ่ชŒ

    OpenVPN ่‹ฅ่ฆๆŠ•ๅ…ฅๆญฃๅผ็’ฐๅขƒ,ๅปบ่ญฐ้กๅค–็•™ๆ„ไปฅไธ‹ๅนพ้ปž:

    • ๆ†‘่ญ‰่ˆ‡้‡‘้‘ฐๆฌŠ้™server.key ๅƒ…ๅ…่จฑ root ่ฎ€ๅ–, chmod 600 ไธฆ้™ๅˆถ็›ฎ้Œ„ๆฌŠ้™。
    • TLS ็‰ˆๆœฌ่ˆ‡ๅŠ ๅฏ†ๅฅ—ไปถ:ไฝฟ็”จ tls-version-min 1.2 ไปฅไธŠ, cipher ๅปบ่ญฐ AES-256-GCM ๆˆ– CHACHA20-POLY1305
    • CRL ่ˆ‡ๆ†‘่ญ‰ๅปขๆญข:็”จๅฎŒ้›ข่ทๅ“กๅทฅๆˆ–็•ฐๅธธ่ฃ็ฝฎ,่จ˜ๅพ—ๆ’ค้Šทๆ†‘่ญ‰:
    # ๆ’ค้Šท client01 ๆ†‘่ญ‰
    cd ~/openvpn-pki
    ./easyrsa revoke client01
    ./easyrsa gen-crl
    
    # ๆ›ดๆ–ฐๅˆฐ OpenVPN ็›ฎ้Œ„
    sudo cp pki/crl.pem /etc/openvpn/
    sudo systemctl restart openvpn@server.service
    • ้˜ฒๆšดๅŠ›ๆŽƒๆ
      • ็›ก้‡ไฝฟ็”จ UDP,ๅฟ…่ฆๆ™‚ๆ‰ๆ”น 443/TCP。
      • ๆญ้… tls-auth ๆˆ– tls-crypt,ๆœชๅธถ้‡‘้‘ฐ็š„ๅฐๅŒ…ๆœƒ่ขซไธŸๆމ。
      • ๅฏ็ตๅˆ Fail2Ban ็›ฃๆŽง /var/log/openvpn.log
    • ๆœ€ๅฐๆฌŠ้™ๅŽŸๅ‰‡:ไฝฟ็”จ user nobody / group nogroup, ไธฆ้™ๅˆถ Server ๆœฌๆฉŸ้˜ฒ็ซ็‰†่ฆๅ‰‡。

    ๅ、ๅธธ่ฆ‹้Œฏ่ชค่ˆ‡ๆŽ’ๆŸฅๆŠ€ๅทง

    OpenVPN ๆŽ’้Œฏไปฅ「็œ‹ Log + ๆธฌ่ทฏ็”ฑ」็‚บไธป,ๅนพๅ€‹ๅธธ่ฆ‹ๅ•้กŒ่ˆ‡ๆชขๆŸฅๆ–นๅผๅฆ‚ไธ‹。

    1. Client ้€ฃไธไธŠ

    • ๆชขๆŸฅ Server ้˜ฒ็ซ็‰†:
      sudo ss -lunpt | grep 1194
      sudo iptables -L -n | grep 1194
    • ็ขบ่ชๅ…ฌ็ถฒ IP / FQDN ๆ˜ฏๅฆๆญฃ็ขบ,ISP ๆ˜ฏๅฆๅฐ้Ž–่ฉฒๅŸ 。

    2. ้€ฃๅพ—ไธŠ VPN,ไฝ†ๅ…ง็ถฒ็„กๆณ•้€ฃ

    • ็ขบ่ช Server ๆ˜ฏๅฆๆœ‰ๅ•Ÿ็”จ IP Forwarding、NAT ๆ˜ฏๅฆๅญ˜ๅœจ。
    • Client ไธŠๆŸฅ็œ‹่ทฏ็”ฑ่กจ:
    # Windows
    route print
    
    # Linux / macOS
    ip route

    3. ๆ†‘่ญ‰้Œฏ่ชคๆˆ– TLS ๅคฑๆ•—

    • Log ไธญ่‹ฅๅ‡บ็พ TLS Error: TLS key negotiation failed,้€šๅธธๆ˜ฏ ca / cert / key / tls-auth ไธไธ€่‡ดๆˆ–ๆ™‚้–“ไธๅŒๆญฅ。
    • ็ขบ่ช Client ่ˆ‡ Server ็ณป็ตฑๆ™‚้–“ๆ˜ฏๅฆ็›ธๅทฎ้Žๅคง。

    4. ๅฆ‚ไฝ•ๆŸฅ็œ‹็›ฎๅ‰้€ฃ็ทšไฝฟ็”จ่€…?

    sudo cat /var/log/openvpn-status.log

    ๆœƒๅˆ—ๅ‡บ็›ฎๅ‰้€ฃ็ทš็š„ Client、ๅฐๆ‡‰ IP、้€ฃ็ทšๆ™‚้–“、ๆต้‡็ตฑ่จˆ็ญ‰่ณ‡่จŠ。

    ๐Ÿงญ ่กŒๅ‹•ๆธ…ๅ–ฎ

    ✅ ๅœจๆธฌ่ฉฆ็’ฐๅขƒๅฎŒๆˆ OpenVPN / easy-rsa ๅฎ‰่ฃ่ˆ‡ PKI ๅปบ็ซ‹
    ✅ ไพๅ…ฌๅธๅ…ง็ถฒ่ฆๅŠƒ,่จญๅฎšๅˆ้ฉ็š„ VPN ็ถฒๆฎต่ˆ‡ IP Forwarding
    ✅ ๅปบ็ซ‹่‡ณๅฐ‘ไธ€็ต„ๆญฃๅผ็š„ Server.conf ไธฆๅ•Ÿ็”จ systemd ๆœๅ‹™
    ✅ ็‚บๆฏไฝไฝฟ็”จ่€…็”Ÿๆˆๅฐˆๅฑฌ .ovpn ๆช”ไธฆๆธฌ่ฉฆ่ทจๅนณๅฐ้€ฃ็ทš
    ✅ ๆ นๆ“šๅฏฆ้š›้œ€ๆฑ‚้ธๆ“‡「ๅ…จ้€š้“ / ๅˆ†ๆต / ๅชๅฐŽๅ…ง็ถฒ」็š„่ทฏ็”ฑ็ญ–็•ฅ
    ✅ ๅปบ็ซ‹ CRL ็ฎก็†ๆต็จ‹,้›ข่ทๆˆ–้บๅคฑ่ฃ็ฝฎๆ™‚ๅฏ็ซ‹ๅณๆ’ค้Šทๆ†‘่ญ‰
    ✅ ๆญ้…้˜ฒ็ซ็‰†่ˆ‡ Fail2Ban ็ญ‰ๅทฅๅ…ท,ๆŒ็บŒ็›ฃๆŽง OpenVPN ๆ—ฅ่ชŒ่ˆ‡็•ฐๅธธ

    — WWFandy・Linux VPN ็ญ†่จ˜

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš