Sinds een paar weken heb ik een Unifi Security Gateway van Ubiquiti als router voor mijn KPN glasvezel verbinding. Het aan de praat krijgen van een dergelijke configuratie is een avondje werk. In een aantal stappen zal ik mijn huidige configuratie delen en vertellen hoe je de configuratie aanpast voor je USG.
De configuratie gaat uit van het volgende eindresultaat:
- Aansluiting WAN-poort op NTU van KPN. (eth0)
- Internet (IPv4+IPv6) en IPTV over LAN-poort (eth1)
- Telefonie over Voip-poort via Experiabox (eth2)
Voorbereiding
Allereerst dient de USG gekoppeld te worden aan een Controller. Zorg ervoor dat je configuratie zo schoon mogelijk is. Het is hierbij meteen belangrijk om het IP-adres van de USG op 192.168.2.254 in te stellen. Om gebruik te kunnen maken van de VOIP-poort op de USG moet een vinkje worden gezet bij “Configure VOIP port as WAN2 on UniFi Security Gateway 3P”. Dit vind je terug bij Instellingen op het tabblad Sites.
Zoek vervolgens het Mac-adres van de WAN-poort op zodat we een verbinding met het KPN glasvezel netwerk kunnen maken. Dit kan ook middels het volgende commando. Let erop dat je dit commando uitvoert op de USG.
sudo su
pppoe_id=$(ifconfig | grep -m 1 eth0 | awk '{print $5}' | awk -F':' '{print "Gebruikersnaam is "$1"-"$2"-"$3"-"$4"-"$5"-"$6"@internet"}')
echo "$pppoe_id"
exit
Configuratie
Vervolgens gaan we de config.gateway.json file aanmaken. Je kunt hiervoor de onderstaande JSON overnemen, de instellingen zijn gebaseerd op het werk van Kriegsman. Let op bij het opslaan van het bestand dat deze in Unix formaat wordt opgeslagen, in een editor als Notepad++ is dit eenvoudig in te stellen.
In de configuratie vervang je MAC-ADRES-WAN-POORT met de waarde die het eerdere commando heeft opgeleverd. Plaats vervolgens de configuratie op de controller in de juiste map (Bijvoorbeeld: data/sites/default).
{
"firewall": {
"ip-src-route": "disable",
"ipv6-name": {
"WANv6_IN": {
"default-action": "drop",
"description": "WAN inbound traffic forwarded to LAN",
"enable-default-log": "''",
"rule": {
"10": {
"action": "accept",
"description": "Allow established/related sessions",
"state": {
"established": "enable",
"related": "enable"
}
},
"20": {
"action": "drop",
"description": "Drop invalid state",
"state": {
"invalid": "enable"
}
}
}
},
"WANv6_LOCAL": {
"default-action": "drop",
"description": "WAN inbound traffic to the router",
"enable-default-log": "''",
"rule": {
"10": {
"action": "accept",
"description": "Allow established/related sessions",
"state": {
"established": "enable",
"related": "enable"
}
},
"20": {
"action": "drop",
"description": "Drop invalid state",
"state": {
"invalid": "enable"
}
},
"30": {
"action": "accept",
"description": "Allow IPv6 icmp",
"protocol": "ipv6-icmp"
},
"40": {
"action": "accept",
"description": "allow dhcpv6",
"destination": {
"port": "546"
},
"protocol": "udp",
"source": {
"port": "547"
}
}
}
}
},
"ipv6-receive-redirects": "disable",
"ipv6-src-route": "disable",
"log-martians": "enable",
"source-validation": "disable"
},
"interfaces": {
"bridge": {
"br0": {
"aging": "300",
"bridged-conntrack": "disable",
"hello-time": "2",
"max-age": "20",
"priority": "32768",
"promiscuous": "disable",
"stp": "false"
}
},
"ethernet": {
"eth0": {
"description": "eth0 - FTTH",
"duplex": "auto",
"mtu": "1512",
"speed": "auto",
"vif": {
"4": {
"address": [
"dhcp"
],
"description": "eth0.4 - IPTV",
"dhcp-options": {
"client-option": [
"send vendor-class-identifier "IPTV_RG";",
"request subnet-mask, routers, rfc3442-classless-static-routes;"
],
"default-route": "no-update",
"default-route-distance": "210",
"name-server": "update"
}
},
"6": {
"description": "eth0.6 - Internet",
"mtu": "1508",
"pppoe": {
"2": {
"idle-timeout": "180",
"dhcpv6-pd": {
"no-dns": "''",
"pd": {
"0": {
"interface": {
"eth1": "''"
},
"prefix-length": "/48"
}
},
"rapid-commit": "disable"
},
"firewall": {
"in": {
"ipv6-name": "WANv6_IN",
"name": "WAN_IN"
},
"local": {
"ipv6-name": "WANv6_LOCAL",
"name": "WAN_LOCAL"
}
},
"ipv6": {
"address": {
"autoconf": "''"
},
"dup-addr-detect-transmits": "1",
"enable": "''"
},
"mtu": "1500",
"name-server": "auto",
"password": "kpn",
"user-id": "MAC-ADRES-WAN-POORT@internet"
}
}
},
"7": {
"bridge-group": {
"bridge": "br0"
},
"description": "eth0.7 - VOIP",
"mtu": "1500"
}
}
},
"eth1": {
"description": "eth1 - LAN",
"duplex": "auto",
"speed": "auto",
"ipv6": {
"dup-addr-detect-transmits": "1",
"router-advert": {
"cur-hop-limit": "64",
"link-mtu": "0",
"managed-flag": "false",
"max-interval": "600",
"name-server": [
"2001:4860:4860::8888",
"2001:4860:4860::8844"
],
"other-config-flag": "false",
"prefix": {
"::/64": {
"autonomous-flag": "true",
"on-link-flag": "true",
"valid-lifetime": "2592000"
}
},
"radvd-options": [
"RDNSS 2001:4860:4860::8888 2001:4860:4860::8844 {};"
],
"reachable-time": "0",
"retrans-timer": "0",
"send-advert": "true"
}
}
},
"eth2": {
"description": "eth2 - ExperiaBox",
"duplex": "auto",
"speed": "auto",
"vif": {
"7": {
"bridge-group": {
"bridge": "br0"
},
"description": "eth2.7 - ExperiaBox VOIP",
"mtu": "1500"
}
}
}
}
},
"protocols": {
"igmp-proxy": {
"interface": {
"eth0.4": {
"alt-subnet": [
"0.0.0.0/0"
],
"role": "upstream",
"threshold": "1"
},
"eth1": {
"alt-subnet": [
"0.0.0.0/0"
],
"role": "downstream",
"threshold": "1"
}
}
},
"static": {
"interface-route6": {
"::/0": {
"next-hop-interface": {
"pppoe2": "''"
}
}
},
"route": {
"213.75.112.0/21": {
"next-hop": {
"10.58.44.1": "''"
}
}
}
}
},
"port-forward": {
"auto-firewall": "enable",
"wan-interface": "pppoe2"
},
"service": {
"dhcp-server": {
"hostfile-update": "disable",
"shared-network-name": {
"LAN_192.168.2.0-24": {
"authoritative": "enable",
"subnet": {
"192.168.2.0/24": {
"dns-server": [
"192.168.2.254",
"8.8.8.8",
"8.8.4.4"
]
}
}
}
}
},
"dns": {
"forwarding": {
"cache-size": 150,
"name-server": [
"8.8.8.8",
"8.8.4.4"
],
"except-interface": ["eth0", "eth2","eth0.6"],
"options": [
"listen-address=192.168.2.254"
]
}
},
"nat": {
"rule": {
"5000": {
"description": "IPTV",
"destination": {
"address": "213.75.112.0/21"
},
"log": "disable",
"outbound-interface": "eth0.4",
"protocol": "all",
"type": "masquerade"
},
"5010": {
"description": "KPN Internet",
"log": "enable",
"outbound-interface": "pppoe2",
"protocol": "all",
"source": {
"address": "192.168.2.0/24"
},
"type": "masquerade"
},
"6001": {
"disable": "''"
},
"6002": {
"disable": "''"
},
"6003": {
"disable": "''"
},
"6004": {
"disable": "''"
},
"6005": {
"disable": "''"
},
"6006": {
"disable": "''"
},
"6007": {
"disable": "''"
},
"6008": {
"disable": "''"
}
}
}
},
"system": {
"name-server": [
"8.8.8.8",
"8.8.4.4",
"2001:4860:4860::8888",
"2001:4860:4860::8844"
]
}
}
Wanneer deze configuratie is gesynchroniseerd naar de USG zal het internet moeten werken. IPTV vereist nog een handeling, namelijk het toevoegen van de juiste route. Deze is te bepalen met het volgende commando:
sudo su
r_ip=$(show dhcp client leases | grep router | awk '{ print $3 }');
iptv_static=$(echo "Route 213.75.112.0/21 next-hop $r_ip")
echo -e "$iptv_static"
exit
Vervang in de config.gateway.json het ip-adres 10.58.44.1 met het adres wat door de USG als next-hop is doorgegeven. Synchroniseer de configuratie weer naar de USG, je kunt dit triggeren door bijvoorbeeld een poort door te sturen. Televisie zou meteen na het synchroniseren moeten werken. Is dit niet het geval dan is een reboot misschien wel de oplossing, let er dan op dat het next-hop adres weer veranderd kan zijn.
Sluit de Experiabox aan op de VOIP-poort, het voip lampje op de Experiabox zal gaan branden. Controleer of het bellen ook daadwerkelijk werkt. Is dat het geval dan is de USG succesvol ingericht.