Es gibt ja jede Menge Anleitungen für Site2Site VPN mit Azure, Beispiele:

Connect your on-premises network to an Azure virtual network

Microsoft Azure : How-to setup a site-to-site VPN using OpenSwan (on a Telenet SOHO subscription)

 
Raspi muss natürlich sinnvollerweise eine statische Adresse haben und Routing muss enabled sein (wie im zweiten Beispiel gut beschrieben):

#/etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1

Das war der einfache Teil – mit Raspbian (auch in der aktuellsten Version März 2018) funktioniert die Verbindung aber wie oben beschrieben nicht weil OpenSWAN im Raspian bei 2.6.38 aufhört (2012 – der Zeitpunkt an dem der Gründer das Projekt verlassen und Libreswan gegründet hat) und das schlicht und ergreifend zu alt ist wie es sich darstellt.

Libreswan gibts aber für Raspbian in einer aktuellen Version nicht als Binary, d.h. man muss selbst zur Tat schreiten: Auf der Github Seite zu Libreswan ist eh alles beschrieben:

apt-get install libnss3-dev libnspr4-dev pkg-config libpam-dev \
                libcap-ng-dev libcap-ng-utils libselinux-dev \
                libcurl3-nss-dev flex bison gcc make libldns-dev \
                libunbound-dev libnss3-tools libevent-dev xmlto \
                libsystemd-dev

TAR saugen, auspacken und dann make all USE_DNSSEC=false USE_FIPSCHECK=false sowie sudo make install.

Das zentrale Configfile (/etc/ipsec.conf) ist im Endeffekt auch relativ knackig:

version 2.0

config setup
   nat_traversal=yes
   virtual_private=%v4:192.168.1.0/24     # Range @home
   plutostderrlog=/var/log/libreswan.log
conn azure
   authby=secret
   auto=start
   type=tunnel
   left=192.168.1.99               # Adresse vom Raspi
   leftsubnet=192.168.1.0/24       # Range @home
   leftnexthop=192.168.1.1         # Router @home
   right=1.2.3.4                   # Adresse Azure virtual network gateway (public IP)
   rightsubnet=10.0.0.0/16         # Range Azure virtual network
   ikev2=insist
   ike=aes256-sha256-modp1024      # ohne spezielle Policy nur MODP1024 möglich!
   esp=aes256-sha256

Dann noch PSK in /etc/ipsec.secrets hinterlegen:

%any %any: PSK "dasgeheimniskommthierhin"

(alternativ auch statt dem ersten %any die lokale Adresse und dem zweiten %any die public IP des virtual network gateways)

Start/Stop wie gehabt mit sudo service ipsec start bzw. sudo service ipsec stop. Logfile wie in der Configdatei angeführt.

Am Router muss Port Forwarding für UDP 500 und 4500 auf den Raspi eingerichtet werden.

Auf den Clients im Heimnetz muss eine entsprechende Route eingetragen werden, z.B. route add 10.0.1.0 mask 255.255.255.0 192.168.1.99 für einen Windows-Client wenn es in Azure ein Subnet 10.0.1.0/24 für irgendwelche Resourcen (VMs, oder ähnliches) gibt (natürlich müssen in Azure die entsprechendesn Network Security Groups auf den Resourcen sitzen damit man hin kommt, da unterscheidet sich der Zugriff via VPN nicht wirklich von dem Zugriff aus dem Internet).

Doku zu den IKEv2 Parametern:
https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpn-devices

Doku zu den IPSec Policies (noch nicht probiert):
https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-ipsecikepolicy-rm-powershell