====== Openvpn ====== ===== Certification Autorithy ===== Create certificate folder apt-get install easy-rsa make-cadir /etc/easy-rsa-legnago cd /etc/easy-rsa-legnago Edit vars and source vars ./clean-all ./build-dh ./pkitool --initca ==== server certificate ==== NAME=legnago-gw ./pkitool --pass --server $NAME # create passphrase here openssl rsa -in keys/$NAME.key -out keys/$NAME.pem # give passphrase here chmod 600 keys/$NAME.pem ==== client certificate ==== NAME=nms ./pkitool --pass $NAME openssl rsa -in keys/$NAME.key -out keys/$NAME.pem ===== Mikrotik server ===== Upload and import certificates /certificate import file=server.crt import file=server.pem import file=ca.crt Simplier method openssl genrsa -des3 -out ca.key 4096 # specify dns name of mikrotik server in common name openssl req -new -x509 -days 3650 -key ca.key -out ca.crt # now import in mikrotik ca.crt and after ca.key ip pool /ip pool add name=ovpn-pool ranges=10.15.32.34-10.15.32.38 profile and vpn user /ppp profile add change-tcp-mss=default comment="" local-address=10.15.32.33 \ name="your_profile" only-one=default remote-address=ovpn-pool \ use-compression=default use-encryption=required use-vj-compression=default define vpn user /ppp secret add caller-id="" comment="" disabled=no limit-bytes-in=0 \ limit-bytes-out=0 name="username" password="password" \ routes="" service=any openvpn instance /interface ovpn-server server set auth=sha1,md5 certificate=router_cert \ cipher=blowfish128,aes128,aes192,aes256 default-profile=your_profile \ enabled=yes keepalive-timeout=disabled max-mtu=1500 mode=ip netmask=29 \ port=1194 require-client-certificate=no ===== Linux client ===== apt-get install openvpn /etc/openvpn/client1.conf dev tun proto tcp-client remote legnago.csgalileo.org 1194 ca /etc/easy-rsa-legnago/keys/ca.crt cert /etc/easy-rsa-legnago/keys/nms.crt key /etc/easy-rsa-legnago/keys/nms.pem tls-client port 1194 user nobody group nogroup #comp-lzo # Do not use compression. It doesn't work with RouterOS (at least up to RouterOS 3.0rc9) # More reliable detection when a system loses its connection. ping 15 ping-restart 45 ping-timer-rem persist-tun persist-key # Silence the output of replay warnings, which are a common false # alarm on WiFi networks. This option preserves the security of # the replay protection code without the verbosity associated with # warnings about duplicate packets. mute-replay-warnings # Verbosity level. # 0 = quiet, 1 = mostly quiet, 3 = medium output, 9 = verbose verb 3 cipher AES-256-CBC auth SHA1 pull auth-user-pass auth.cfg script-security 2 up /etc/openvpn/up.sh /etc/openvpn/up.sh (chmod +x) #!/bin/sh ip route add 10.90.0.0/16 via 10.15.32.33 /etc/openvpn/auth.cfg username password Start service with systemd systemctl start openvpn@client1 systemctl enable openvpn@client1 ===== Linux server ===== proto tcp dev tun ca /etc/easy-rsa/keys/ca.crt cert /etc/easy-rsa/keys/captive.crt key /etc/easy-rsa/keys/captive.pem dh /etc/easy-rsa/keys/dh2048.pem server 10.4.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 cipher BF-CBC max-clients 100 client-config-dir ccd # It's a good idea to reduce the OpenVPN # daemon's privileges after initialization. # # You can uncomment this out on # non-Windows systems. user nobody group nogroup persist-key persist-tun # Output a short status file showing # current connections, truncated # and rewritten every minute. #status /var/log/openvpn/captive.stats log /var/log/openvpn/captive.log # 0 is silent, except for fatal errors # 4 is reasonable for general usage # 5 and 6 can help to debug connection problems # 9 is extremely verbose #log openvpn.log #log-append openvpn.log verb 0 # Silence repeating messages. At most 20 # sequential messages of the same message # category will be output to the log. mute 20 #fragment 1300 mssfix 1300 #link-mtu 1503 #tun-mtu 1460 #client-connect /etc/openvpn/on-client-connect script-security 2 push "explicit-exit-notify" management localhost 7505 client-to-client ===== Mikrotik client ===== Import certificates import file-name=ca.crt import file-name=galileo.crt import file-name=galileo.pem ===== LXD ===== To enable tun inside container lxc config device add tun unix-char path=/dev/net/tun