There are a lot of questions on SE regarding this and I tried nearly all of them. Unfortunately none solved my problem.
I followed the instruction on DigitalOcean, but adapted it a little to fit my OS (openSuSE Leap 42.3). To be clear, /etc/sysconfig/SuSEfirewall2 is modified as follows:
FW_SERVICES_EXT_UDP="500 4500"
FW_ROUTE="yes"
FW_MASQUERADE="yes"
FW_MASQ_NETS=""
FW_SERVICES_EXT_IP="esp ah"
My /etc/ipsec.conf:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
ike=aes256-sha1-modp1024
esp=aes256-sha1
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@server.com
leftcert=/etc/ipsec.d/certs/vpn-server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightdns=8.8.8.8,8.8.4.4
rightsourceip=10.10.10.0/24
rightsendcert=never
eap_identity=%identity
Also modified /etc/sysctl.conf:
net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.ip_no_pmtu_disc = 1
My Azure Inbound Rules:
Allow UDP 500, 4500
Default outbound rules.