dneska sem s claudem řešil, jak se dostat do administrace modulu, kterej mám přímo v routeru a nedobytně sedí za WAN v úplně jiný síti - hodí se to pro kontrolu teploty, úrovně signálu a dalších věcí a taky pro aktualizaci firmwaru přímo v modulu 😮 tady je návod, třeba se někomu bude taky hodit 🤔 Přístup k webu SFP modulu (8311) přes Asus router s VLAN na WANuMáte XGS-PON modul s komunitním firmwarem 8311 přímo v SFP+ portu Asus routeru a chcete se z domácí sítě dostat na jeho web (výchozí 192.168.11.1)? Pokud WAN jede přes VLAN (např. CETIN VLAN 848 + PPPoE), samotný alias IP ani statická routa nepomohou. Tenhle návod to řeší bez Merlina, na stock firmwaru. Testováno na: Asus RT-BE88U, stock firmware, PPPoE na VLAN 848, modul PRX126 s 8311 firmwarem na 192.168.11.1. Na dalších Asusech s Broadcom čipem (BN/BE/AX série) by to mělo fungovat stejně, ale berte to jako nevyzkoušené. Proč to normálně nejdeModul má management na netagované síti 192.168.11.0/24, kdežto internet jede ve VLAN 848. Broadcom routery řeší VLAN na WANu přes nástroj vlanctl a jeho výchozí pravidlo pro netagované příchozí rámce je DROP. Router tedy odpovědi modulu prostě zahazuje. Skript proto: vytvoří nad fyzickým WAN portem virtuální rozhraní eth9.mgmt, přidá vlanctl pravidlo, které netagované rámce pošle na toto rozhraní místo zahození, dá routeru adresu 192.168.11.2, zapne NAT (MASQUERADE), takže se na modul dostanete z jakéhokoli PC v LAN bez úprav. VLAN 848 ani PPPoE se to nedotkne. Nic se neukládá do NVRAM, po restartu routeru je vše pryč (skript zůstává uložený). 1. Zapněte SSH na routeruWeb routeru → Administrace → Systém → Povolit SSH: Pouze LAN, port 22 → Použít. 2. Připojte se přes PuTTYHost: IP routeru (např. 192.168.1.1), port 22, typ SSH. Přihlašovací jméno a heslo jsou stejné jako do webu routeru. Tip: obrazovku vyčistíte příkazem clear nebo Ctrl+L. V PuTTY se vkládá pravým tlačítkem myši. 3. Zjistěte fyzický WAN port (kontrola)nvram get wan_ifnamesNa RT-BE88U vrací eth9. Skript si port zjistí sám, tohle je jen pro kontrolu, že výstup není prázdný. 4. Nahrajte skript do routeruSkript se ukládá do /jffs/, což je trvalé úložiště, takže restart routeru přežije. a) V PuTTY napište a odentrujte: cat > /jffs/sfp-mgmt.sh << 'EOF'b) Zkopírujte celý skript níže (od #!/bin/sh po esac) a v PuTTY klikněte pravým tlačítkem. c) Na novém řádku napište EOF a Enter. d) Kontrola, že se uložil celý: tail -3 /jffs/sfp-mgmt.shMěl by končit řádkem esac. Skript sfp-mgmt.sh: #!/bin/sh
# sfp-mgmt.sh - pristup k managementu SFP modulu (8311) na Asus routeru,
# kdyz WAN jede s VLAN taggingem (napr. CETIN VLAN 848) pres vlanctl.
#
# Pouziti: sh /jffs/sfp-mgmt.sh start|stop|status
#
# Nic neuklada do NVRAM, po rebootu routeru je potreba spustit znovu.
STICK_IP=192.168.11.1 # IP modulu
LOCAL_IP=192.168.11.2 # IP, kterou dostane router v siti modulu
PREFIX=24
PHY=$(nvram get wan_ifnames | awk '{print $1}')
if [ -z "$PHY" ]; then
echo "Chyba: nelze zjistit fyzicky WAN port (nvram wan_ifnames)."
exit 1
fi
MGMT="$PHY.mgmt"
# Vypise RX tabulku vlanctl pro netagovane ramce.
# vlanctl pise do kernel logu, proto si tam dame znacku a cteme jen od ni.
rx0_table() {
m="sfpmgmt-$$-$(date +%s)"
echo "$m" > /dev/kmsg 2>/dev/null
vlanctl --if "$PHY" --rx --tags 0 --show-table >/dev/null 2>&1
dmesg | sed -n "/$m/,\$p"
}
nat_rule() {
iptables -t nat "$1" POSTROUTING -d "$STICK_IP" -o "$MGMT" -j MASQUERADE 2>/dev/null
}
do_start() {
T=$(rx0_table)
if echo "$T" | grep "Rx VLAN Device" | grep -qv "Rx VLAN Device : $MGMT"; then
echo "Pozor: RX tabulka pro netagovane ramce na $PHY uz obsahuje cizi pravidla."
echo "WAN asi nejede pres VLAN, skript by mohl rozbit pripojeni. Koncim."
exit 1
fi
if [ ! -d "/sys/class/net/$MGMT" ]; then
echo "Vytvarim $MGMT ..."
vlanctl --if-create-name "$PHY" "$MGMT" || { echo "vlanctl --if-create-name selhal"; exit 1; }
fi
if ! echo "$T" | grep -q "Rx VLAN Device : $MGMT"; then
echo "Pridavam RX pravidlo (netagovane -> $MGMT) ..."
vlanctl --if "$PHY" --rx --tags 0 --set-rxif "$MGMT" --rule-append || { echo "vlanctl pravidlo selhalo"; exit 1; }
fi
ip link set "$MGMT" up
if ! ip addr show dev "$MGMT" | grep -q "inet $LOCAL_IP/"; then
ip addr add "$LOCAL_IP/$PREFIX" dev "$MGMT"
fi
nat_rule -C || nat_rule -I
echo "Testuji $STICK_IP ..."
if ping -c 2 -W 2 "$STICK_IP" >/dev/null 2>&1; then
echo "OK - modul odpovida, otevri https://$STICK_IP"
else
echo "Modul neodpovida na ping."
fi
}
do_stop() {
while nat_rule -C; do nat_rule -D; done
if [ -d "/sys/class/net/$MGMT" ]; then
ip addr del "$LOCAL_IP/$PREFIX" dev "$MGMT" 2>/dev/null
fi
OK=1
if [ -d "/sys/class/net/$MGMT" ]; then
# --if-delete smaze rozhrani i pravidla, ktera na nej odkazuji
ip link set "$MGMT" down 2>/dev/null
vlanctl --if-delete "$MGMT" || OK=0
fi
if rx0_table | grep -q "Rx VLAN Device : $MGMT"; then
echo "RX pravidlo pro $MGMT porad existuje."
OK=0
fi
if [ "$OK" -eq 1 ]; then
echo "Hotovo, vraceno do puvodniho stavu."
else
echo "Nektery krok selhal, zkontroluj: sh $0 status (pripadne pomuze reboot)."
fi
}
do_status() {
echo "WAN port: $PHY"
if [ -d "/sys/class/net/$MGMT" ]; then
echo "Rozhrani: $MGMT existuje"
else
echo "Rozhrani: $MGMT NEEXISTUJE"
fi
if rx0_table | grep -q "Rx VLAN Device : $MGMT"; then
echo "vlanctl: pravidlo je"
else
echo "vlanctl: pravidlo CHYBI"
fi
if ip addr show dev "$MGMT" 2>/dev/null | grep -q "inet $LOCAL_IP/"; then
echo "Adresa: $LOCAL_IP/$PREFIX"
else
echo "Adresa: CHYBI"
fi
if nat_rule -C; then
echo "NAT: pravidlo je"
else
echo "NAT: pravidlo CHYBI"
fi
if ping -c 1 -W 2 "$STICK_IP" >/dev/null 2>&1; then
echo "Modul: odpovida"
else
echo "Modul: neodpovida"
fi
}
case "$1" in
start) do_start ;;
stop) do_stop ;;
status) do_status ;;
*) echo "Pouziti: sh $0 start|stop|status"; exit 1 ;;
esac
Pokud máte modul na jiné IP, upravte na začátku skriptu proměnné STICK_IP a LOCAL_IP. 5. PoužitíZapnout přístup k modulu: sh /jffs/sfp-mgmt.sh startVýstup by měl končit hláškou OK - modul odpovida. Pak z PC otevřete https://192.168.11.1 (certifikát je self-signed, odklikněte ho). Zjistit stav: sh /jffs/sfp-mgmt.sh statusVypíše, jestli existuje rozhraní, vlanctl pravidlo, adresa, NAT a jestli modul odpovídá na ping. Vypnout a vrátit vše do původního stavu: sh /jffs/sfp-mgmt.sh stopSkript lze pustit opakovaně, nic se nezdvojí. Doporučuji si hned po nahrání vyzkoušet cyklus start → stop → status → start. 6. Po restartu routeruNastavení žije jen v paměti, takže po restartu (případně po výpadku WANu) přístup zmizí. Skript ale zůstává v /jffs/, stačí se přihlásit přes SSH a znovu pustit: sh /jffs/sfp-mgmt.sh startStock firmware neumí skripty spouštět automaticky. Na Asuswrt-Merlin by šlo totéž zavěsit do wan-start / firewall-start. Bezpečnostní pojistkaPokud skript při startu zjistí, že tabulka pro netagované rámce už obsahuje jiná pravidla (typicky když WAN nejede přes VLAN), skončí a na nic nesáhne, aby nerozbil připojení. V takovém případě skript nepotřebujete, obvykle stačí alias IP na WAN rozhraní a NAT. Užitečné diagnostické příkazyVýpis vlanctl tabulek (vlanctl píše do kernel logu, ne do terminálu): vlanctl --if eth9 --rx --tags 0 --show-table
vlanctl --if eth9 --tx --tags 0 --show-table
dmesg | tail -60Pokud v TX tabulce uvidíte SET_VID 0x00000350, jede WAN ve VLAN 848 (0x350 = 848).