Vi har bråkat lite med vår bredbandsleverantör (haha, Comhem!) på sistone och beslutat att vi inte vill vara kund hos dem mer. Tyvärr finns ingen annan leverantör i huset (Telia har haft huset “under installation” sedan 2007), så vi föll tillbaka på 4G då vi har rätt bra förutsättningar för det.

Problemet är bara att någon bestämde sig för att inte använda ett vanligt 4G-modem, utan ville Göra Det Själv.

Så en minidator (Asus Tinkerboard S) fanns redan hemma, ett modem och en trådlös basstation behövde inhandlas. Modemet blev ett Huawei E3372 (se tidigare post här om modemet) och routern blev en Netgear R7500 mest p.g.a. fanns begagnad och relativt billig. udev-reglerna från föregående inlägg gick dock att återanvända.

Då jag inte använt iptables för att dirigera paket på ett tag (nftables-hacket förra året räknas inte!) blev det nästan som en pinsam kalldusch att genomföra projektet - hur gjorde en ens? Dessutom var det hejdlöst drygt att ladda ner paketberoenden på min laptop, skicka till enkortsdatorn och installera, upptäcka att fler paket behövdes och så vidare.

När alla paket och paketberoenden väl var på plats konfigurerade jag upp modemet med en network-manager-profil (nmtui var hjälpsamt här, sedan behövde jag komplettera konfigurationsfilen med en pin-kod) och upptäckte att network-manager har dispatcher-skript en kan använda. Nedan är ett skript jag stal från techytalk.info:

#!/bin/bash
 
IF=$1
STATUS=$2

# ppp0 var aktuellt för mig, ändra annars här
if [ "$IF" == "ppp0" ]
then
    case "$2" in
        up)
        logger -s "ppp0 up, create a masquerade party!"
        echo 1 > /proc/sys/net/ipv4/ip_forward
        /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
        /sbin/iptables -A FORWARD -i ppp0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
        /sbin/iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
        ;;
        down)
        logger -s "ppp0, too lazy to remove iptables rules"
        echo 0 > /proc/sys/net/ipv4/ip_forward
        ;;
        pre-up)
        logger -s "NM Script pre-up triggered"
        ;;
        post-down)
        logger -s "NM Script post-down triggered"
        ;;
        *)
        ;;
    esac
fi

Sparade ett liknande skript i /etc/NetworkManager/dispatcher.d/ och gjorde det exekverbart. Att jag inte inkluderat några fler regler än NAT-översättningen är för att modemet just nu agerar brandvägg och gör sin egen NAT-översättning. Det ska gå att byta firmware på modemet men jag har inte haft möjlighet än.

Avslutade med att lägga in en dnsmasq som delar ut IP-adresser samt hanterar DNS-frågor. Kastade även in en pihole-liknande reklam- och spårningsblockering redan i brandväggen.