OpenVPN Server build on Debian 11

Quote from : https://www.server-world.info/en/note?os=Debian_11&p=openvpn&f=1

[1]Install OpenVPN.
root@dlp:~# apt -y install openvpn easy-rsa iptables
[2]Create CA and Certificates.
root@dlp:~# cd /usr/share/easy-rsa# initialize
root@dlp:/usr/share/easy-rsa# ./easyrsa init-pki
init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /usr/share/easy-rsa/pki # create CA
root@dlp:/usr/share/easy-rsa# ./easyrsa build-ca
Using SSL: openssl OpenSSL 1.1.1k 25 Mar 2021 # set any pass-phrase Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Generating RSA private key, 2048 bit long modulus (2 primes) …….+++++ …………………..+++++ e is 65537 (0x010001) You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.’, the field will be left blank. —– # set any name Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Server-CA CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /usr/share/easy-rsa/pki/ca.crt # create server certificates
# any name is OK for [server1] name
# (it is set for file name of certs or commonName)
root@dlp:/usr/share/easy-rsa# ./easyrsa build-server-full server1 nopass
Using SSL: openssl OpenSSL 1.1.1k 25 Mar 2021 Generating a RSA private key ……+++++ …………………+++++ writing new private key to ‘/usr/share/easy-rsa/pki/easy-rsa-1222.5qztus/tmp.OXJSCa’ —– Using configuration from /usr/share/easy-rsa/pki/easy-rsa-1222.5qztus/tmp.B2bZfO # answer with pass-phrase set on CA Enter pass phrase for /usr/share/easy-rsa/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject’s Distinguished Name is as follows commonName :ASN.1 12:’server1′ Certificate is to be certified until Dec 26 05:16:27 2023 GMT (825 days) Write out database with 1 new entries Data Base Updated # create client certificates
# any name is OK for [client1] name
# (it is set for file name of certs or commonName)
root@dlp:/usr/share/easy-rsa# ./easyrsa build-client-full client1 nopass
Using SSL: openssl OpenSSL 1.1.1k 25 Mar 2021 Generating a RSA private key ………….+++++ …………….+++++ writing new private key to ‘/usr/share/easy-rsa/pki/easy-rsa-1302.I8x7Jq/tmp.fQMVRq’ —– Using configuration from /usr/share/easy-rsa/pki/easy-rsa-1302.I8x7Jq/tmp.XD1zES # answer with pass-phrase set on CA Enter pass phrase for /usr/share/easy-rsa/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject’s Distinguished Name is as follows commonName :ASN.1 12:’client1′ Certificate is to be certified until Dec 26 05:18:02 2023 GMT (825 days) Write out database with 1 new entries Data Base Updated # generate Diffie Hellman ( DH ) parameter
root@dlp:/usr/share/easy-rsa# ./easyrsa gen-dh
Using SSL: openssl OpenSSL 1.1.1k 25 Mar 2021 Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time …………++*++*++*++* DH parameters of size 2048 created at /usr/share/easy-rsa/pki/dh.pem # create TLS-Auth key
root@dlp:/usr/share/easy-rsa# openvpn –genkey secret ./pki/ta.key# copy generated certs
root@dlp:/usr/share/easy-rsa# cp -pR /usr/share/easy-rsa/pki/{issued,private,ca.crt,dh.pem,ta.key} /etc/openvpn/server/
[3]Configure OpenVPN.
It based on the environment Firewalld is running because of using ruoting rules.
# copy sample configuration
root@dlp:~# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/root@dlp:~# vi /etc/openvpn/server/server.conf# line 32 : change if need (listening port of OpenVPN)
port 1194# line 35 : change if need (use udp on this example)
;proto tcp
proto udp# line 53 : change if need (use tun on this example)
;dev tap
dev tun# line 78 : specify certificates
ca ca.crt
cert issued/server1.crt
key private/server1.key# line 85 : specify DH file
dh dh.pem# line 101 : specify network to be used on VPN
# any network are OK except your local network
server 192.168.100.0 255.255.255.0# line 142 : uncomment and change to your local network
push “route 10.0.0.0 255.255.255.0″# line 231 : keepalive settings
keepalive 10 120# line 244 : specify TLS-Auth key
tls-auth ta.key 0# line 263 : uncomment (enable compress)
comp-lzo# line 281 : enable persist options
persist-key
persist-tun# line 306 : specify log level (0 – 9, 9 means debug lebel)
verb 3root@dlp:~# vi /etc/openvpn/server/add-bridge.sh# create new
#!/bin/bash # network interface which can connect to local network IF=enp1s0 # interface VPN tunnel uses # for the case of this example like specifying [tun] on the config, generally this param is [tun0] VPNIF=tun0 echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A FORWARD -i ${VPNIF} -j ACCEPT iptables -t nat -A POSTROUTING -o ${IF} -j MASQUERADE root@dlp:~# vi /etc/openvpn/server/remove-bridge.sh# create new
#!/bin/bash # network interface which can connect to local network IF=enp1s0 # interface VPN tunnel uses # for the case of this example like specifying [tun] on the config, generally this param is [tun0] VPNIF=tun0 echo 0 > /proc/sys/net/ipv4/ip_forward iptables -D FORWARD -i ${VPNIF} -j ACCEPT iptables -t nat -D POSTROUTING -o ${IF} -j MASQUERADE root@dlp:~# chmod 700 /etc/openvpn/server/{add-bridge.sh,remove-bridge.sh}
root@dlp:~# vi /lib/systemd/system/openvpn-server@.service# add into [Service] section
[Service]
…..
…..
ExecStartPost=/etc/openvpn/server/add-bridge.sh ExecStopPost=/etc/openvpn/server/remove-bridge.sh root@dlp:~# systemctl daemon-reload
root@dlp:~# systemctl enable –now openvpn-server@server

留言

這個網誌中的熱門文章

OpenWRT dumb AP with WPA3-SAE + 802.11r