====== EdgeRouter + OpenVPN Road Warrior Example ======
===== Generate Certificates With EasyRSA 3 =====
You'll need to generate server, client, and DH certificates using the instructions [[https://community.openvpn.net/openvpn/wiki/EasyRSA3-OpenVPN-Howto|here]].
Once you do that, copy the server certs (ca.crt, server.crt, dh.pem, and server.key) to:
/config/auth/openvpn/
On the EdgeRouter.
Also generate some client certs either now or later. You'll need them to put the contents inside of the client ovpn file.
===== EdgeRouter Configuration =====
On the EdgeRouter, make changes where appropriate. Subnet 192.168.0.0/24 should be whatever your LAN subnet behind the EdgeRouter is. If your subnet is one of the common ones that is by default (like 192.168.0.0/24), there's a good chance your clients may have issues if their LAN also matches yours.
You can use NAT rules to avoid having to change your LAN addressing scheme.
set interfaces openvpn vtun0 firewall in name OpenVPN-Mobile
set interfaces openvpn vtun0 local-host xx.xx.xx.xx
set interfaces openvpn vtun0 local-port xxxxx
set interfaces openvpn vtun0 mode server
set interfaces openvpn vtun0 openvpn-option --mssfix
set interfaces openvpn vtun0 openvpn-option '--cipher AES-128-CBC'
set interfaces openvpn vtun0 openvpn-option '--auth SHA256'
set interfaces openvpn vtun0 openvpn-option --float
set interfaces openvpn vtun0 openvpn-option --duplicate-cn
set interfaces openvpn vtun0 openvpn-option '--fragment 1400'
set interfaces openvpn vtun0 protocol udp
set interfaces openvpn vtun0 server max-connections 10
set interfaces openvpn vtun0 server push-route 10.10.10.0/24
set interfaces openvpn vtun0 server push-route 192.168.0.0/24
set interfaces openvpn vtun0 server subnet 10.10.10.0/24
set interfaces openvpn vtun0 tls ca-cert-file /config/auth/openvpn/ca.crt
set interfaces openvpn vtun0 tls cert-file /config/auth/openvpn/server.crt
set interfaces openvpn vtun0 tls dh-file /config/auth/openvpn/dh.pem
set interfaces openvpn vtun0 tls key-file /config/auth/openvpn/server.key
===== OpenVPN .ovpn Config File For Clients =====
client
tls-client
remote remote.hostname.here
port xxxx
proto udp
dev tun
pull
cipher AES-128-CBC
auth SHA256
fragment 1400
mssfix
float
ca certificate file contents here
pem certificate file contents here
pem key file contents here
===== NAT Rules To Work Around Same Subnets On Both Ends =====
If you have a subnet on your LAN side that is one of the common default ones on most consumer networks (like 192.168.0.0/24), you'll need to use NAT rules to setup a NETMAP to work around conflicts.
Example:
Server LAN: 192.168.0.0/24
Client Range: 10.10.10.0/24
NETMAP Range: 172.30.254.0/24
The NETMAP range is the IP range that will be directly mapped to your LAN range and the range your clients will use to connect to devices on your LAN (aka, if your clients need to access 192.168.0.5, they will use 172.30.254.5 instead).
set service nat rule 1000 description OpenVPN-Mobile-vtun0
set service nat rule 1000 destination address 172.30.254.0/24
set service nat rule 1000 inbound-interface vtun0
set service nat rule 1000 inside-address address 192.168.0.0/24
set service nat rule 1000 log disable
set service nat rule 1000 protocol all
set service nat rule 1000 type destination