[Berlin-wireless] [Solved] Freifunk Firmware

Marco Tidow martidow
Di Mai 1 16:09:16 CEST 2007


On Wed, Apr.25. 00:12 +0200, Martin Schmitz wrote:
> > Was willst du machen?
> 
> Ich wollte den Betrieb eines FF-Routers oder wenigstens die Installation des
> olsrd als Vorraussetzungshürde für die Benutzung meines Gateways bestimmen.
> Ich dachte, das sollte ohnehin so sein... Nun gut...

Hallo Martin,

dhcp-splash ist der königsweg, um den "ersten kontakt" von neu-usern in
ff-kompatible bahnen zu lenken.

wegen des zusätzlichen httpd-prozesses für die splash-redirect geschichte
ist dieses packet für 8MB-router aber zu fett.  hier wäre noch eine option,
den redirect auf einen anderen node mit mehr RAM zu machen.


was den punkt no-inet-ohne-olsr-hürde angeht, geht mit etwas handarbeit
folgender ansatz;  nur wer uns olsr-/batmensch-packets per wifi schickt
oder als wifi-dhcp-client maskiert wird, wird zu nicht-104/105er IP´s
geforwarded.

vorteile dieser variante: kostet keinen extra-prozess und praktisch
keine CPU.


Gruß, marco


1)
  man braucht das ipt_recent  kernel-modul (per router shell):

    cd /
    SRC='http://212.222.128.68/sven-ola/ipkg/packages'
    wget -O - "$SRC"/iptables-mod-extra_1.3.3-2_mipsel.ipk |tar -xOzf - ./data.tar.gz | tar -xzf - ./usr/lib/iptables/libipt_recent.so
    wget -O - "$SRC"/kmod-ipt-extra_2.4.30-brcm-5_mipsel.ipk |tar -xOzf - ./data.tar.gz | tar -xzf - ./lib/modules/2.4.30/ipt_recent.o

    wget -O - "$SRC"/freifunk-iptables-missing_1.4.5_mipsel.ipk |tar -xOzf - ./data.tar.gz | tar -xzf - ./usr/lib/iptables/libipt_icmp.so

2)

  dann in /etc/local.fw folgendes von hand einbauen:

    ip_msk_2net() {
      local IPMSK="$(echo "$1 $2"|sed 's/\./ /g')"
      set -- $IPMSK ; echo $(($1 & $5)).$(($2 & $6)).$(($3 & $7)).$(($4 & $8))
    }


  case "$1" in
    'start')

      # check-point, allow forwarding to 104/105er,
      # but deny non-wifi-dhcp-clients and non-OLSR-/batman-clients on WIFIDEV to non-FF-net(s)
        # 104.0.0.0/7  == 104er + 105er
          iptables -I FORWARD -i $WIFIDEV -d ! 104.0.0.0/7   -m recent --name forw_ok \! --rcheck --seconds 180    -j REJECT

        # encount nodes sending olsr-/batman-udp packets
          iptables -I INPUT   -s 104.0.0.0/8 -p udp --sport  698 --dport  698 -m recent --name forw_ok --set
          iptables -I INPUT   -s 105.0.0.0/8 -p udp --sport 1966 --dport 1966 -m recent --name forw_ok --set

        # same w/ wifi-dhcp-clients -> INET
          WLDHCP="$(nvram get ff_wldhcp)"    # e.g. ff_wldhcp=<ip>/<pre>,<mask>[;...]
          if [ -n "$WLDHCP" ]; then
            IFS=\;
            for ENT in $WLDHCP; do
              IP="${ENT%%/*}"; ENT="${ENT#*/}"; MSK="${ENT#*,}"; PRE="${ENT%%,*}"
              if [ -n "$IP" -a -n "$PRE" ]; then
                iptables -I FORWARD -i $WIFIDEV -s $IP/$PRE -d ! 104.0.0.0/7    -m recent --name forw_ok --set
              fi
            done
            unset IFS
          fi

      [...]
      ;;






Mehr Informationen über die Mailingliste Berlin