Das Unified Security Gateway ist das Firewall/Router Gerät von Ubiquity.
Verbinden per RJ45 to DB9 Kabel mit folgenden Einstellungen:
Per Konsole oder SSH zur USG verbinden (Login ubnt:ubnt
)
configure
edit interfaces ethernet eth1
delete address 192.168.1.1/24
set address <NEW_IP-ADDRESS/NETMASK>
show address
[commit|commit-confirm]
/etc/dnsmasq.d/dnsmasq.static.conf
kann selbst editiert werden, um weitere aufzulösende Hostnamen per DNS-Namen im Netzwerk zu erreichen. 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 <HOSTNAME> inet <IP_ADDRESS> commit;save;exit
config.gateway.json
Datei gepflegt werden, siehe custom_json-configshow dhcp leases
clear dhcp leases
clear dhcp lease ip <IP_ADRESS>
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
mca-ctrl -t dump-cfg [> FILE.TXT]
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: 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 <UNIFI BASE>/data/sites/<SITE_ID>/config.gateway.json chmod abc. <UNIFI BASE>/data/sites/<SITE_ID>/config.gateway.json
Inhalt:
{ "system": { "static-host-mapping": { "host-name": { "<DNS_HOST_NAME>": { "alias": [ "setup", "<DNS_ALIAS_NAME>" ], "inet": [ "<IP_ADDRESS>" ] }, "<DNS_HOST_NAME>": { "inet": [ "<IP_ADDRESS>" ] }, "<DNS_HOST_NAME>": { "inet": [ "<IP_ADDRESS>" ] } } } }, "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" } } } } }
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.
Gestestet mit Ubuntu 18.04.4 LTS:
apt install network-manager-l2tp-gnome
/etc/ipsec.d/tunnels/remote-access
auf USG; stehen unter „ike=…“ und „esp=…“) 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 = "<NAME_DES_VPN>"; 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 = "<PUBLIC_DYNDNS_FQDN_DER_USG>"; keepalive_ip = 0.0.0.0; localid { fqdn = "<PUBLIC_DYNDNS_FQDN_DER_FRITZBOX>"; } remoteid { fqdn = "<PUBLIC_DYNDNS_FQDN_DER_USG>"; } mode = phase1_mode_idp; phase1ss = "all/all/all"; keytype = connkeytype_pre_shared; key = "<PRESHAREDKEY>"; cert_do_server_auth = no; use_nat_t = yes; use_xauth = no; use_cfgmode = no; phase2localid { ipnet { ipaddr = <LOKALES_SUBNETZ_DER_FRITZBOX>; mask = 255.255.255.0; } } phase2remoteid { ipnet { ipaddr = <LOKALES_SUBNETZ_DER_USG>; mask = 255.255.255.0; } } phase2ss = "esp-all-all/ah-none/comp-all/pfs"; accesslist = "<LOKALES_SUBNETZ_DER_USG> 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": { "<PUBLIC_IP_ADRESSE_DER_FRITZBOX>": { "authentication": { "id": "<PUBLIC_IP_ADRESSE_DER_USG>", "mode": "pre-shared-secret", "pre-shared-secret": "<PRESHAREDKEY>", "remote-id": "<PUBLIC_IP_ADRESSE_DER_FRITZBOX>" }, "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": "<LOKALES_SUBNETZ_DER_USG_IN_CIDR>" }, "remote": { "prefix": "<REMOTE_SUBNETZ_DER_FRITZBOX_IN_CIDR>" } } } } } } } }, "system": { ... } }
/etc/ipsec.d/tunnels/remote-access
ipsec statusall
show vpn ipsec sa
tcpdump -i eth0 -n udp dst port 500 [or 4500]
swanctl –log