====== Usg ====== Das **U**nified **S**ecurity **G**ateway ist das Firewall/Router Gerät von Ubiquity. ===== Konsole ===== Verbinden per RJ45 to DB9 Kabel mit folgenden Einstellungen: * Baud rate 115200 * Data bits 8 * Parity NONE * Stop bits 1 * Flow control NONE ===== IP-Adresse setzen ===== Per Konsole oder SSH zur USG verbinden (Login ubnt:''ubnt'') - ''configure'' - ''edit interfaces ethernet eth1'' - ''delete address 192.168.1.1/24'' - ''set address '' - ''show address'' - ''[commit|commit-confirm]'' - ping neue IP-Adresse ===== Custom DNS Hosts ===== * dnsmasq \\ Die Datei ''/etc/dnsmasq.d/dnsmasq.static.conf'' kann selbst editiert werden, um weitere aufzulösende Hostnamen per DNS-Namen im Netzwerk zu erreichen. \\ Nach dem Editieren muss der ''dnsmasq'' Daemon neugestartet werden /etc/init.d/dnsmasq force-reload Besser ist es die Datei und den Daemon mit diesen Befehlen zu steuern: \\ configure set system static-host-mapping host-name inet commit;save;exit * default dns server \\ Die eigenen Host Einträge müssen in der ''config.gateway.json'' Datei gepflegt werden, siehe [[netzwerk:ubiquity:usg#custom_json-config|custom_json-config]] ===== DHCP ===== * Leases anzeigen show dhcp leases * alle Leases bereinigen clear dhcp leases * bestimmte Leas bereinigen clear dhcp lease ip ===== NAT ===== Hier ein Beispiel für Source-NAT (DAs LAN soll mit dem WAN-Interface eth0 Maskiert werden, wenn die Zieladresse 192.168.175.1 erreicht werden soll) configure set service nat rule 6500 description "BESCHREIBUNG" set service nat rule 6500 type masquerade set service nat rule 6500 log disable set service nat rule 6500 destination address 192.168.175.1 set service nat rule 6500 outbound-interface eth0 set service nat rule 6500 protocol all set service nat rule 6500 source group network-group "corporate_network" commit;save;exit Weiter unten sieht man auch die Konfiguration in der ''config.gateway.json'' ===== Konfiguration ausgeben ===== mca-ctrl -t dump-cfg [> FILE.TXT] ===== Custom JSON-Config ===== In der Datei ''config.gateway.json'' können eigene Konfigurationen für die USG erstellt werden. Möchte man sehen wie die aktuelle Konfiguration auf der USG (also quasi die aktuelle config.gateway.json der USG) aussieht, so nutzt man den o.g. "dump" befehl per ''mca-ctrl''. Beispiele und Quelle: [[https://help.ui.com/hc/en-us/articles/215458888-UniFi-USG-Advanced-Configuration-Using-config-gateway-json#:~:text=The%20config.,available%20in%20the%20web%20GUI.|help.ui.com]] Einige Konfigurationen können noch nicht im Unifi-Controller gemacht werden, diese müssen dann in der JSON-Datei eingerichtet werden. **ACHTUNG**: Die JSON-Anweisungen müssen richtig formatiert sein, sonst läuft das Provisionieren in eine Schleife. Wurde die ''config.gateway.json'' falsch formatiert gespeichert und provisioniert, einfach die Änderungen wieder entfernen und warten bis die USG nach einem erneuten Provisionieren (ist ja noch in der Schleife) die neue (alte) Konfig erhält und bootet. Daher die Datei immer vom JSON-Format her prüfen, z.B. hier [[https://jsonformatter.curiousconcept.com]], hier [[https://jsonlint.com/]] oder auf der Konsole:python -m json.tool config.gateway.json Damit die Konfiguration übernommen wird, muss im Controller die Provisionierung der USG erzwungenwerden. touch /data/sites//config.gateway.json chmod abc. /data/sites//config.gateway.json Inhalt: { "system": { "static-host-mapping": { "host-name": { "": { "alias": [ "setup", "" ], "inet": [ "" ] }, "": { "inet": [ "" ] }, "": { "inet": [ "" ] } } } }, "service": { "nat": { "rule": { "6001": { "description": "MASQ corporate_network to WAN", "log": "disable", "destination":{ "address":"192.168.175.1", }, "outbound-interface": "eth0", "protocol": "all", "source": { "group": { "network-group": "corporate_network" } }, "type": "masquerade" } } } } } ===== VPN ===== Die USG bietet von haus aus eine Verbindung zu Remote Usern per L2TP/IPSec an. Hier eine Konfiguration für die USG, welche über einen anderen Router ins Internet gelangt (NAT-T). Generell sollte die Konfiguration auch mit einer direkten Verbindung zum Internet laufen. ==== Konfiguration auf USG ==== - **Radius**: Settings:GATEWAY:RADIUS - Radius einschalten - "Secret" vergeben - Alles andere auf Default lassen - **Radius-User** (Benutzer für VPN-Verbindung): Settings:GATEWAY:RADIUS \\ - Benutzernamen und Password vergeben (**ACHTUNG**: Benutzername und Password sind **case sensitive**) - VLAN-ID angeben in dem die VPN-Verbindung landen soll (nur wenn mit VLANs gearbeitet wird) - Tunnel Type auf "...(L2TP)" - Tunnel Medium Type auf "IPv4..." stellen. - **Radius-Profil**: Settings:CONFIGURATION PROFILES:RADIUS - im "Default" Profil "Enable Wired" aktivieren, wenn mit VLANs garbeitet wird - **VPN-Verbindung**: Settings:VPN:VPN Servers - Neuen VPN Server erstellen - VPN Type "L2TP Server" - Pre-Shared Key eintragen - Gateway IP / Subnet vergeben - Radius Profil auf "Default" - MS-CHAP-v2 aktivieren ==== Verbindung von Android aus ==== - neue VPN-Verbindung erstellen - Typ auf "L2TP/IPSec PSK" stellen - Serveradresse auf öffentliche IP stellen - L2TP-Schlüssel leer lassen - IPSec-ID leer lassen - vorinstallierter IPSec-Schlüssle auf "Pre-Shared Key" der USG stellen - Nutzername auf RADIUS Benutzer stellen - Passwort auf das Passwort des RADIUS Benutzer stellen ==== Verbindung von Ubuntu aus ==== Gestestet mit Ubuntu 18.04.4 LTS: - VPN-Tunnel Software installieren und Betriebssystem danach neustarten apt install network-manager-l2tp-gnome - VPN-Verbindung vom Typ "Layer 2 Tunneling Protocol (L2TP)" erstellen - Namen nach belieben vergeben - bei Gateway die Öffentliche IP angeben - User auf RADIUS Benutzer stellen (ist Case Sensitive) - "IPsec Settings" öffnen - "Enable IPsec tunnel to L2TP host" anhaken - Gateway ID leer lassen wenn USG hinter NAT-Router - Pre-shared key auf "Pre-Shared Key" der USG stellen - unter Advanced einen Phase 1/2 Algorithmus angeben, welchen die USG anbietet (siehe: ''/etc/ipsec.d/tunnels/remote-access'' auf USG; stehen unter "ike=..." und "esp=...") \\ Phase1 Algorithms z.B. "aes128-sha1-modp2048" \\ Phase2 Algorithms z.B. "aes256-sha1-modp1024" - unter "PPP Settings" Haken setzen bei "Point-to-Point Verschlüsselung (MPPE) verwenden" - Sicherheit auf "128Bit (am sichersten)" setzen - VPN-Verbindung speichern ==== IPsec zwischen USG und Fritzbox ==== **Funktioniert nicht, da auf der USG keine Hostnames, sondern nur feste IP-Adressen verwendet werden dürfen!** Auf der USG und Fritzbox werden jeweils eine manuelle Konfiguration installiert. Die Konfiguration mittels GUI ist nicht möglich. **Fritzbox** ''vpn_config.cfg'' vpncfg { connections { enabled = yes; conn_type = conntype_lan; name = ""; always_renew = yes; reject_not_encrypted = no; dont_filter_netbios = yes; localip = 0.0.0.0; local_virtualip = 0.0.0.0; remoteip = 0.0.0.0; remote_virtualip = 0.0.0.0; remotehostname = ""; keepalive_ip = 0.0.0.0; localid { fqdn = ""; } remoteid { fqdn = ""; } mode = phase1_mode_idp; phase1ss = "all/all/all"; keytype = connkeytype_pre_shared; key = ""; cert_do_server_auth = no; use_nat_t = yes; use_xauth = no; use_cfgmode = no; phase2localid { ipnet { ipaddr = ; mask = 255.255.255.0; } } phase2remoteid { ipnet { ipaddr = ; mask = 255.255.255.0; } } phase2ss = "esp-all-all/ah-none/comp-all/pfs"; accesslist = " 255.255.255.0"; } ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500", "udp 0.0.0.0:4500 0.0.0.0:4500"; } **USG** wird in die Standardkonfigurationsdatei hinzugefügt ''/.../sites/default/config.gateway.json'' { "vpn": { "ipsec": { "auto-firewall-nat-exclude": "enable", "auto-update": "60", "esp-group": { "ESP_FritzBox": { "compression": "disable", "lifetime": "3600", "mode": "tunnel", "pfs": "enable", "proposal": { "1": { "encryption": "aes256", "hash": "sha1" } } } }, "ike-group": { "IKE_FritzBox": { "ikev2-reauth": "no", "key-exchange": "ikev1", "lifetime": "3600", "proposal": { "1": { "dh-group": "2", "encryption": "aes256", "hash": "sha1" } } } }, "ipsec-interfaces": { "interface": [ "eth0" ] }, "nat-networks": { "allowed-network": { "0.0.0.0/0": "''" } }, "nat-traversal": "enable", "site-to-site": { "peer": { "": { "authentication": { "id": "", "mode": "pre-shared-secret", "pre-shared-secret": "", "remote-id": "" }, "connection-type": "initiate", "ike-group": "IKE_FritzBox", "ikev2-reauth": "inherit", "local-address": "any", "tunnel": { "0": { "allow-nat-networks": "disable", "allow-public-networks": "disable", "esp-group": "ESP_FritzBox", "local": { "prefix": "" }, "remote": { "prefix": "" } } } } } } } }, "system": { ... } } ==== Troubleshooting ==== * VPN-Konfiguration und -Verbindungen auf USG einsehen und kontrollieren * Konfiguration ''/etc/ipsec.d/tunnels/remote-access'' * Status von Strongswan anzeigen ''ipsec statusall'' * bestehende VPN-Verbindungen anzeigen ''show vpn ipsec sa'' * Verbindungsanfragen zeigen * auf Netzwerk ''tcpdump -i eth0 -n udp dst port 500 [or 4500]'' * auf Strongswan ''swanctl --log''