After the disastrous ISP schism
- Close all ports
- Nuke (or stop) all old VMs (exclude OPNSense)
- Make DMZ
- Make new basic VMs (cloning deb12 template)
- Open basic ports
- IONOS VPS for mail
- Some new very safe services
- HE IPv6 tunnel
- Own authoritative nameservers for domain zone
- Another VPS in unknown provider for
- Tor
- Reverse-proxying the media library
- PHP on main site with more web services from scratch, hopefully secure
- More new services
- Make DN42 router VM with bird and wg
- Peer with people
- Bring up BGP sessions
- Services
- Asterisk
- IP phones and ATAs
- Trunks; SDF, Tandmx, uwutel, PSTN
- Firewall and switch
- Site to Site wireguard
- Establish telephony
Objectives
- Unify all logins
- Single authentication and authorization LDAP store
- SSO on as many services as possible
- Private CA PKI server certs for private endpoint security
- User certificates for extra secure clients mTLS
Steps
- Migrate .lan zone to .int.arf20.com at ARFNET BIND (misc)
- Deploy piHole
- Create Root CA with clca
- Deploy OpenXPKI with it
- [#] OpenXPKI ACME
- Deploy OpenLDAP and set up schemas
- OpenLDAP LDAPS with cert
- Deploy Keycloak and give it a cert
- Connect Keycloak to OpenLDAP
- DNS on all internal services
- [#] Reverse proxy all internal services
- Internal services dashboard
- Give internal web service endpoints TLS certificates
- [#] Connect non-SSO services to LDAP
- Put SSO login on services where possible
- Kerberos and Keycloak
arf20.com
Registrar: namecheap
| Nameserver | Name | IP |
|---|---|---|
| NS1 | ns1.arf20.com | 2.59.235.35 2600:70ff:f039:4::13 |
| NS2 | ns2.arf20.com | 5.250.186.185 2001:ba0:210:d600::1 |
Physical network
WAP
|
+-----+ +--------------------------+ +----------------+
ISP ===| ONT |---| DELL switch |-----| TP-Link switch |
+-----+ +--------------------------+ +----------------+
| | | |
| | | |
+---------------+ Rest of devices Living room devices
| eno1 eno2 |
| server router |
+---------------+
- 1000BASE-T
= GPON fiber
12U rack
+--------------+--------+
| drawer | |
| drawer | PDU |
| patch panel | |
| switch | |
| | |
| ONT, ATA | |
| R720 | |
| R720 | |
| | |
| | |
| | |
| | UPS |
+--------------+--------+
- ONT: CPE Huawei GPON
- switch: DELL PowerConnect 5424
- server: DELL PowerEdge R720 @ 2x E5-2670 + 64GB + (240+120)GB SSD + (4+3x7RAID5)TB HDD
- ATA: Cisco/Linksys PAP2T
Logical network
+---------+
+--------+ |
internet| router | DMZ |
+--------++ |
+--------+
Port assignents
| port | endpoint | options |
|---|---|---|
| g2 | ONT | VLAN access 2 |
| g4 | server eno2 WAN | VLAN access 2 |
| g6 | test2 | VLAN access 2 |
| g3 | WAP | VLAN access 5 |
| g5 | PC | VLAN access 4 |
| g7 | Living R. | VLAN access 5 |
| g9 | server eno1 DMZ+LAN | VLAN trunk 4, 5 |
| g12 | voip poe switch | VLAN access 9 |
| g15 | test4 | VLAN access 4 |
| g16 | ATA | VLAN access 4 |
| g17 | test1 | VLAN access 1 |
| g19 | test5 | VLAN access 5 |
| g21 | iDRAC | VLAN access 4 |
| g23 | printer | VLAN access 4 |
Management
- interface vlan 4: 192.168.4.2/24 gw 192.168.4.1
- AVANZA_STATIC: 2.59.235.35
- AVANZA_CGNAT: dynamic 100.x.x.x
- HE prefixes
- 2001:470:1f21:125::/64
- 2600:70ff:f039::/48
- IONOS VPS: 5.250.186.185 2001:ba0:210:d600::1
- AVANZA
- WAN_STATIC: 2.59.235.1
- WAN_CGNAT: dynamic
- HE v6 tunnel
- server: 216.66.87.102, 2001:470:1f20:125::1/64
- client: 2.59.235.35, 2001:470:1f20:125::2
| name | VLAN | net | desc |
|---|---|---|---|
| WAN | 2 | ||
| DMZ | 4 | 192.168.4.0/24 2600:70ff:f039:4::/64 |
Services |
| LAN | 5 | 192.168.5.0/24 2600:70ff:f039:5::/64 |
Clients |
| VPN | 192.168.6.0/24 2600:70ff:f039:6::/64 |
Wireguard clients | |
| dark | 192.168.7.0/24 |
dark IPsec remote subnet | |
| B:PSN | un | 192.168.18.0/24 | Site-B:PisoNET |
| B:SBN | 192.168.8.0/24 | Site-B:SiteBNET | |
| voip | 9 | 192.168.9.0/24 | VoIP |
| dn42 | 42 | 172.20.196.32/27 fdfd:acab:caca::/48 |
DN42 ARFNET-MNT |
- WAN_CGNAT in
- deny *
- WAN_STATIC in
- allow v4 from * to {services} --> NAT rules
- DMZ in
- deny v4 to LAN net
- allow v4 to firewall
- allow v4 to * gw WAN_STATIC
- allow v6 to * gw HE_TUNNELV6
- LAN in
- allow v4 ICMP to firewall
- allow v4 IP DNS to firewall
- allow v4 to DMZ net
- allow v4 to * gw WAN_CGNAT
- allow v6 to * gw HE_TUNNELV6
- Wireguard in
- allow v4+6 to DMZ net
- allow v4 to * gw WAN_CGNAT
- allow v6 to * gw HE_TUNNELV6
| Service | Customer | IPProto | Ext Port | Host | Re Port |
|---|---|---|---|---|---|
| WireGuard | UDP | 51820 | router | ||
| DNS NS1 | TCP/UDP | 53 | misc | ||
| iperf3 | TCP | 5201 | misc | ||
| NNTP | TCP | 119 | misc | ||
| Web | TCP | 80,443 | web | ||
| Git | TCP | 9418 | web | ||
| bittorrent | TCP/UDP | 8999 | nas | ||
| rsync | TCP/UDP | 873 | nas | ||
| IRC | TCP | 6667 | comm | ||
| IRCS | TCP | 6697 | comm | ||
| XMPP c2s | TCP | 5222 | comm | ||
| XMPP s2s | TCP | 5269 | comm | ||
| TURN STUN | TCP/UDP | 3478 | comm | ||
| TURN | TCP/UDP | 5349 | comm | ||
| TURN UDP relay | TCP/UDP | 49152-50176 | comm | ||
| mc waterfall proxy | TCP | 25565 | game | 25567 | |
| mc bedrock geyser | TCP | 19132 | game | 19132 | |
| css-ds | TCP/UDP | 27015 | game | ||
| hblink | TCP | 54000 | comm | ||
| hbmon websocket | TCP | 54000 | comm | ||
| exo ssh | exo | TCP | 4041 | exovps | 22 |
| exo extra | exo | TCP | 4040 | exovps | 4040 |
| yero ssh | yero | TCP | 1511 | yerovps | 22 |
| yero mc | yero | TCP | 25569 | yerovps | 25565 |
| yero panel | yero | TCP | 24444 | yerovps | 24444 |
| Service | Customer | IPProto | Dest Host | Dest Port |
|---|---|---|---|---|
| DNS NS1 | TCP/UDP | misc | 53 | |
| Web | TCP | web | 80,443 | |
| NNTP | TCP | misc | 119 | |
| iperf3 | TCP | misc | 5201 | |
| Git | TCP | 9418 | web | |
| bittorrent | TCP/UDP | 8999 | nas | |
| rsync | TCP/UDP | 873 | nas | |
| IRC | TCP | 6667 | comm | |
| IRCS | TCP | 6697 | comm | |
| XMPP c2s | TCP | 5222 | comm | |
| XMPP s2s | TCP | 5269 | comm | |
| TURN STUN | TCP/UDP | 3478 | comm | |
| TURN | TCP/UDP | 5349 | comm | |
| TURN UDP relay | TCP/UDP | 49152-50176 | comm | |
| mc-waterfall-proxy | TCP | 25565 | game |
| | exo-ssh | exo | TCP | 4041 | exovps | 22 | | | exo-extra | exo | TCP | 4040 | exovps | 4040 | | | yero-ssh | yero | TCP | 1511 | yerovps | 22 | | | yero-sql | yero | TCP | 1512 | yerovps | 3306 | | FiveM SuperioresRP | yero | TCP/UDP | 30120,40120 | yerovps | |
- server - DELL PowerEdge R720 running Proxmox PVE - ...
- mail - IONOS VPS running Debian 12 - 5.250.186.185 2001:ba0:210:d600::1
- dark - HostMeNow VPS running Debian 12 - 92.60.77.4
- OPNSense router DMZ.1
- DELL switch DMZ.2
- TP-Link WAP LAN.2
- Proxmox hypervisor DMZ.4
- DELL server iDRAC DMZ.5
- HP printer DMZ.7
- Linksys ATA DMZ.18
server runs Proxmox PVE.
All VMs are Debian 12 (templated) with wazuh agent
- SSH
- Proxmox management interface :8006
- smartmon + node exporter :9100
- sensor exporter*
- NUT - Network UPS TOols daemon (and proper UPS)*
- (routing/firewalling)
- SSH
- DHCP
- unbound DNS
- OpenVPN
- WireGuard
- IPsec
- ntopng :3000
- telegraf - note: editing config via webfig breaks (timeout and unbound config)
RAID attached here (with the grey stuff) (local only)
- SSH
- NFS
- Samba SMB*
- MiniDLNA*
- FTP
- qBittorrent-nox :8085
- jellyfin :8096
- nginx
- mpd :8000
| vhost | webroot/proxy | Comment |
|---|---|---|
| default | /d/FTPServer/ | Allow only VPS and private |
- SSH
- cerbot
- nginx (status at :8080)
- fastcgi PHP
- mariadb SQL
- nginx-prometheus-exporter :9113
- prometheus :9090
- telegraf
- influxdb :8086
- grafana :3000
- Proxmox
- nginx
- iDRAC
- zabbix*
- netbox*
- fcgiwrap
- git-http-backend - git smart http server CGI
- gitd - git daemon
- cgit - web frontend for git
- phpBB - forum software
- Jekyll - blog static site generator thing
- opentracker? - bittorrent tracker*
- gophernicus - gopher server*
- photoprism - photo shit
- squid - http proxy server :3128
| vhost | webroot/proxy | Comment |
|---|---|---|
| default | <return 418 im a teapot> | |
| default:8080 | <return nstub_status> | |
| arf20.com | /var/www/arf20.com/html/ | |
| www.arf20.com | <301 redirect arf20.com> | |
| matrix.arf20.com | http://comm.lan:8008/\_matrix | |
| webmail.arf20.com | /var/www/webmail.arf20.com/html/ | SquirrelMail |
| nextcloud.arf20.com | /var/www/nextcloud.arf20.com/html/ | |
| grafana.arf20.com | http://localhost:3000 | |
| jellyfin.arf20.com | http://nas.lan:8096 | |
| git.arf20.com | /srv/git/ | |
| cgit.arf20.com | fastcgi:/usr/lib/cgit/cgit.cgi | |
| blog.arf20.com | /var/www/blog.arf20.com/_site/ | |
| forum.arf20.com | /var/www/forum.arf20.com/html/ | |
| deb.arf20.com | /d/FTPServer/software/debian/ | |
| memes.arf20.com | /var/www/memes.arf20.com/, /d/FTPserver/{dcimg, dcmemes, explosionsandfire} | |
| news.arf20.com | Web-News NNTP newsgroups frontend | |
| dash.arf20.com | /var/www/dash.arf20.com/html/ | CSTIMS |
| ftp.arf20.com | /d/FTPServer/public/ | |
| photo.arf20.com | [::1]:2342 | photoprism |
| radio.arf20.com | / = /var/www/radio.arf20.com/html/; /stream = nas:8000 | |
| os.arf20.com | / = /d/FTPServer/OS/ | |
| dark.arf20.com | / = /var/www/dark.arf20.com/html/ | |
| wiki.arf20.com | /usr/share/dokuwiki | |
| qbt.arf20.com | http://192.168.4.6:8085 | |
| radarr.arf20.com | http://192.168.4.6:7878 | |
| sonarr.arf20.com | http://192.168.4.6:8989 | |
| kanboard.arf20.com | / = /var/www/kanboard.arf20.com/html/ | |
| vw.arf20.com | http://192.168.4.10:8000 | |
| raip.arf20.com | / = /var/www/raip.arf20.com/html /status = http://comm.lan:8080 |
|
| pki.arf20.com | / = /var/www/pki.arf20.com/html /download/ = http://ca.lan:80 |
|
| testcert.arf20.com | / = /var/www/testcert.arf20.com/html/ | |
| status.yero.dev | http://yerovps.lan:3001 | |
| panaland.arf20.com | /var/www/panaland.arf20.com/html/ |
- SSH
- nginx
- php-fpm8.4
- wazuh*
- vaultwarden :8000
- OpenLDAP slapd :389
- ldap-account-manager :8389
- Keycloak :8443
| vhost | webroot/proxy | Comment |
|---|---|---|
| :8389 | / = /usr/share/ldap-account-manager |
- SSH
- waterfall (minecraft reverse proxy) :25565
- mclobby (auth)
- minepau*
- panaland mc modded :25566
- css dedicated server :27015
- SSH
- cerbot
- unrealircd - IRC
- synapse - matrix
- postgresql - DB for synapse
- pantalaimon - encrypt matterbridge traffic to matrix
- matterbridge - bridge channels with different protocols
- discord
- matrix
- irc
- xmpp
- prosody - XMPP
- coturn - TURN server for matrix and xmpp
- asterisk - VoIP SIP PBX
- hblink :54000
- hbmon :8080 :9000 wesocket
- 1xxx -> users
- 2xxx -> services
- 8xxxxxxx -> tandmx
- 733xxxx -> SDF
- 0119xxxxxxx -> uwutel
- xxxxxx -> regional PSTN
- xxxxxxxxx -> national PSTN
- 00x! -> international PSTN
| number | description |
|---|---|
| 2000 | IVR |
| 2001 | conference |
| 2002 | time |
| 2003 | voicemail |
| 2100 | test hello world |
| 2101 | test digits 10 |
| 2102 | test echo |
| | 1000 | alias for operator | | 1001 | Site A ATA p1 | | 1002 | Site A ATA p2 | | 1011 | Site B ATA p1 | | 1012 | Site B ATA p2 | | 1021 | soft phone 1 | | 1022 | soft phone 2 | | 1031 | remote phone 1 | | 1032 | remote phone 2 | | 1051 | cisco 3911 1 | | 1101 | cisco 7941 |
- SSH
- iperf3
- bind9 - master authoritative nameserver for arf20.com zone NS1
- public recursive*
- INN2 - NNTP USENET server with SDF peering
- Discord servers
- gDebrid (gookie)
- squid - HTTP proxy
- microsocks - SOCKS5 proxy
- SSH
- Amarisoft Callbox
- (ip forward)
- wireguard
- bird eBGP daemon
- bind9 master arfnet.dn42
| peer | asn | bgp |
|---|---|---|
| prefixlabs | 4242421240 | fe80::1240 |
| routedbits | 4242420207 | fe80::207 |
| lezi | 4242423377 | fe80::3377 |
| carlos | 4242420034 | 172.23.34.1 |
| exo | 4242421112 | fe80::dead |
- bind9 slave
- nginx reverse proxy
| vhost | webroot/proxy | comment |
|---|---|---|
| arfnet.dn42 | http://192.168.4.9 | ARFNET in DN42 |
Remote gNodeB
- Open5GC
- Kamailio
- OAI?
Certificate Authority PKI
- clca
- OpenXPKI
- serverd
- clientd
- apache2 :80
Pihole
- SSH
- certbot
- postfix - MTA smtpd, submission, submissions config
- dovecot - imapd
- opendkim
- opendmarc
- bind9 - slave authoritative nameserver NS2
- mlmmj - mailing list manager
- installed to /usr/local/bin/mlmmj-webarchiver.sh and /etc/mlmmj-webarchiver
- mlmmj-webarchiver - mailing list archiver
| vhost | webroot/proxy | Comment |
|---|---|---|
| default | <return 418 im a teapot> | |
| lists.arf20.com | / = /var/www/lists.arf20.com/html/ /archive = /srv/www/htdocs/archive/ |
Mailing lists |
- SSH
- IPsec tunnel
- nginx reverse proxy to nas
| vhost | webroot/proxy | Comment |
|---|---|---|
| default | <return 418 im a teapot> | |
| jokesondmca.mooo.com | http://nas/ | Stuff |
- SSH
- netbox
*TODO
DMZ IPv4s and IPv6 ends in the same way
| Addr | Name | Description |
|---|---|---|
| DMZ.1 | router.lan | OPNSense managent |
| DMZ.2 | switch.lan | DELL PowerConnect 5424 management |
| DMZ.3 | wap.lan | TP-Link Omada AP255 |
| DMZ.4 | proxmox.lan | Proxmox VE management |
| DMZ.5 | idrac.lan | DELL R720 iDRAC7 management |
| DMZ.6 | nas.lan | |
| DMZ.7 | printer.lan | HP Officejet 8020 |
| DMZ.8 | desktop.lan | reserved for desktop on DMZ |
| DMZ.9 | web.lan | |
| DMZ.10 | secure.lan | |
| DMZ.11 | game.lan | |
| DMZ.12 | comm.lan | |
| DMZ.13 | misc.lan | |
| DMZ.17 | [reserved] | |
| DMZ.15 | (t2) | T/2 SDE build box |
| DMZ.16 | pubnix | |
| DMZ.17 | [reserved] | for future raspi |
| DMZ.18 | ata | Linksys ATA |
| DMZ.19 | cucm | Cisco CallManager |
| DMZ.20 | callbox | 5G gNodeB |
| DMZ.21 | dn42 | DN42 edge router |
| DMZ.22 | open5gs | Open5GS 5G core |
| DMZ.23 | dn42-services | DN42 service machine |
| DMZ.24 | ca | Certificate Authority |
| DMZ.25 | pihole | pihole |
| DMZ.192 | yero-debian | yero.lan |
| DMZ.195 | exo-debian | exo.lan |
| DMZ.196 | loofa-debian | loofa.lan |
Site-B:PiSoNet
| Addr | Name | Description |
|---|---|---|
| PSN.1 | Huawei CPE Combo Box | |
| PSN.2 | DELL switch on untagged | |
| PSN.3 | Mikrotik firewall downstream | |
| PSN.4 | Grandstream ATA | |
| PSN.8 | desktop (when applies) |
| Name | Type | Content | Comment |
|---|---|---|---|
| @ | NS | ns1.arf20.com | |
| @ | NS | ns2.arf20.com |
| | ns1 | A | 2.59.235.35 | | | ns1 | AAAA | 2600:70ff:f039:4::13 | | | ns2 | A | 5.250.186.185 | | | ns2 | AAAA | 2001:ba0:210:d600::1 | | | | arf20.com | A | 2.59.235.35 | | | arf20.com | AAAA | 2600:70ff:f039:4::9 | | | | mail.arf20.com | A | 5.250.186.185 | ARFNET-IONOS | mail.arf20.com | AAAA | 2001:ba0:210:d600::1 | ARFNET-IONOS | web.arf20.com | A | 2.59.235.35 | web.arf20.com | AAAA | | game.arf20.com | A | 2.59.235.35 | game.arf20.com | AAAA | 2600:70ff:f039:4::11 | comm.arf20.com | A | 2.59.235.35 | comm.arf20.com | AAAA | 2600:70ff:f039:4::12 | misc.arf20.com | A | 2.59.235.35 | misc.arf20.com | AAAA | 2600:70ff:f039:4::13 | pubnix.arf20.com | A | 2.59.235.35 | pubnix.arf20.com | AAAA | 2600:70ff:f039:4::16 | | irc.arf20.com | CNAME | comm.arf20.com | | jellyfin.arf20.com | CNAME | web.arf20.com | | matrix.arf20.com | CNAME | web.arf20.com | | nextcloud.arf20.com | CNAME | web.arf20.com | | turn.arf20.com | CNAME | comm.arf20.com | | webmail.arf20.com | CNAME | web.arf20.com | | www.arf20.com | CNAME | web.arf20.com | | xmpp.arf20.com | CNAME | comm.arf20.com | | xmppconf.arf20.com | CNAME | comm.arf20.com | | grafana.arf20.com | CNAME | web.arf20.com | | git.arf20.com | CNAME | web.arf20.com | | cgit.arf20.com | CNAME | web.arf20.com | | blog.arf20.com | CNAME | web.arf20.com | | forum.arf20.com | CNAME | web.arf20.com | | deb.arf20.com | CNAME | web.arf20.com | | zabbix.arf20.com | CNAME | web.arf20.com | | memes.arf20.com | CNAME | web.arf20.com | | news.arf20.com | CNAME | misc.arf20.com | | dash.arf20.com | CNAME | web.arf20.com | | ftp.arf20.com | CNAME | web.arf20.com | | photo.arf20.com | CNAME | web.arf20.com | | radio.arf20.com | CNAME | web.arf20.com | | os.arf20.com | CNAME | web.arf20.com | | tel.arf20.com | CNAME | comm.arf20.com | | netbox.arf20.com | CNAME | web.arf20.com | | dark.arf20.com | CNAME | web.arf20.com | | wiki.arf20.com | CNAME | web.arf20.com | | qbt.arf20.com | CNAME | web.arf20.com | | radarr.arf20.com | CNAME | web.arf20.com | | sonarr.arf20.com | CNAME | web.arf20.com | | kanboard.arf20.com | CNAME | web.arf20.com | | vw.arf20.com | CNAME | web.arf20.com | | raip.arf20.com | CNAME | web.arf20.com | | dmr.arf20.com | CNAME | comm.arf20.com | | pki.arf20.com | CNAME | web.arf20.com | | | status.arf20.com | CNAME | mail.arf20.com | | lists.arf20.com | CNAME | mail.arf20.com | | mlmmj.arf20.com | CNAME | mail.arf20.com | | | lahomosexualidadde.arf20.com | CNAME | weonpollo.xyz | | panaland.arf20.com | CNAME | web.arf20.com | | | _acme-challenge.jellyfin | CNAME | (challenge) | | | _acme-challenge.irc | CNAME | (challenge) | | | _acme-challenge.matrix | CNAME | (challenge) | | | _acme-challenge.mail | CNAME | (challenge) | | | _acme-challenge.xmpp | CNAME | (challenge) | | | | arf20.com | MX | mail.arf20.com | | | selector._domainkey | TXT | (DKIM) | DKIM for selector 'selector' | | _dmarc | TXT | (DMARC) | | | arf20.com | TXT | (SPF) | |
| Name | Type | Content | Comment |
|---|---|---|---|
| 2600:70ff:f039:4::13 | PTR | ns1.arf20.com | |
| 2600:70ff:f039:4::9 | PTR | arf20.com |
| | 2600:70ff:f039:4::195 | PTR | global.dns.navy | |
| Name | Type | Content | Comment |
|---|---|---|---|
| 5.250.186.185 | PTR | mail.arf20.com |
+-------+
| clCA |
+-------+
|
v
+----------+
+ - - - - - - - - - - -| OpenXPKI |
+----------+
| | LDAPS cert and cert store
v
| +-----------------------------------------------------------+
| OpenLDAP |
| +-----------------------------------------------------------+
^ ^ ^ ^
| | | | |
+--------+ +----------+ | +----------+
| | app | | app | | +-->| Kerberos |
| secure | | SSO-less | | | +----------+
| +--------+ +----------+ | |
^ ^ +----------+ OAuth2 +---------+
| | | | Keycloak |-------->| app |
| | +----------+ /SAML | SSO-ful |
| | | ^ +---------+
| | | 2FA
| | | |
+--------+ +----------+
+ - >| client | | clients |
+--------+ +----------+
with cert from CA password based
- LDAP applications
- Jellyfin
- pubnix*
- SSO applications
- qBittorrent*