#!/bin/sh export DATE="18.2.2006" export TITLE="Verwaltung: Zugriff per WIFI DHCP" . ${0%/*}/cgi-bin-pre.sh if [ "$REQUEST_METHOD" = "POST" ]; then read QUERY_STRING fi eval $(echo "$QUERY_STRING"|awk -F'&' '{for(i=1;i<=NF;i++){print $i}}') if [ -n "$post_on_wifidhcp" ]; then maclist= number=1 while [ -n "$(eval echo \$on_wifidhcp_mac$number)" ]; do if [ "$(eval echo \$on_wifidhcp_access$number)" = "on" ]; then maclist="$maclist $(unescape $(eval echo \$on_wifidhcp_mac$number))"; fi; number=$(($number+1)) done; maclist=$(echo $maclist $(unescape $on_new_macaddr)) MACLIST_CHANGED= if [ "$maclist" != "$(nvram get on_wifidhcp_macaddrs)" ]; then MACLIST_CHANGED=1; fi; DIRTY= if [ "$on_wifidhcp" != "$(nvram get on_wifidhcp)" ]; then DIRTY=1; nvram set on_wifidhcp=$on_wifidhcp; fi if [ "$on_wifidhcp" = "on" ]; then for V in on_wifidhcp_start on_wifidhcp_num on_wifidhcp_lease; do eval "C=\$$V" C=$(unescape $C) if [ "$C" != "$(nvram get $V)" ]; then DIRTY=1 nvram set $V="$C" fi done fi if [ -n "$DIRTY" ]; then /etc/init.d/S50dnsmasq restart >/dev/null; fi if [ -n "$MACLIST_CHANGED" ]; then /etc/init.d/S82wifidhcp stop >/dev/null; fi nvram set on_wifidhcp_macaddrs="$maclist"; nvram commit>/dev/null 2>&1 if [ -n "$MACLIST_CHANGED" ]; then /etc/init.d/S82wifidhcp start >/dev/null; fi fi eval $(netparam) on_wifidhcp=$(nvram get on_wifidhcp) cat<<EOF

# Verwaltung: Zugriff über WLAN per DHCP

Achtung: Opennet empfielt für eine dauerhafte Unterverteilung des Netzes die Nutzung eines zweiten AccessPoints auf einem anderen Kanal, um Störungen zu vermeiden.

mehr...
An dieser Stelle kann eingestellt werden, wie bzw. ob lokale Clients über WLAN auf den Acesspoint zugreifen können. Die Automatische IP-Vergabe muss dabei nicht immer sinnvoll sein und kann zu Konflikten mit benachbarten Accesspoints führen. Möglicherweise ist es günstiger, am zu verbindenden Rechner die Adresse (Netzwerkkonfiguration) per Hand einzustellen. Die IP-Adresse sollte dabei im Netz 192.168.35.0/24 liegen, also beispielsweise 192.168.35.5. Als Netzmaske muss 255.255.254.0 eingeben werden, als Gateway 192.168.34.$(nvram get wifi_ipaddr | cut -d'.' -f4). Als Nameserver kannst du deinen AccessPoint benutzen ( $(nvram get wifi_ipaddr) ).
Beachtet weiterhin, dass auf dem Rechner der WEP-Key von Opennet eingegeben werden muss. Diesen findest Du im Bereich Wireless Lan.
Die hier angebotene Lösung ist nur für die sporadische Nutzung (bspw. bei Besuch) gedacht. Bitte bedenkt, dass durch die Verwendung dieser Lösung der Opennet-Funkkanal zusätzlich belastet wird. Ausserdem ist zu beachten, dass die Strecke zwischen eurem per WLAN verbundenen Rechner und dem Accesspoint relativ ungesichert ist, da der OpenVPN-Tunnel des Opennets erst am Accesspoint beginnt. Es müssen daher gegebenenfalls weitere Sicherheitsmassnahmen getroffen werden (bspw. ein weiterer OpenVPN-Tunnel).
EOF if [ -z "$(lsmod | grep ipt_mac)" ]; then cat<<EOF
HINWEIS: Wenn Du die lokale Unterverteilung ohne olsr nutzen willst, musst Du das Paket iptables-extra installieren (link startet Installation). Ist dieses nicht verfügbar, musst Du vorher die Liste der verfügbaren Pakete aktualisieren. Anschliessend muss der AccessPoint neu gestartet werden.
EOF else cat<<EOF
Hinweis: Die automatische Vergabe von IP-Adressen per WLAN wird täglich gegen Mitternacht deaktiviert.

| automatische IP-Vergabe per WLAN heute erlauben (DHCP)
| DHCP-Start-IP: | EOF echo "$(echo $DHCPWIFINET|cut -d'.' -f1-2)"."$(($(echo $DHCPWIFINET|cut -d'.' -f3)+1))." cat<<EOF
| DHCP-Benutzeranzahl: |
| DHCP-Lease-Dauer: | Sekunden

Zugriffsgenehmigung auf den OpenVPN-Tunnel nach MAC-Adresse:
| MAC-Adresse | IP-Adresse | Name
EOF maclist=$(nvram get on_wifidhcp_macaddrs) # ergänze die liste der Gateways um die per dhcp erkannten Gateways new_maclist=$maclist dhcp_addrs= if [ -f /var/run/dhcp.leases ]; then dhcp_addrs=$(awk '{print $2"*"$3}' /var/run/dhcp.leases); fi for dhcp_addr in $dhcp_addrs; do dhcp_macaddr=$(echo $dhcp_addr|cut -d'*' -f1) ### if ip-adress is found, check if it is in the right network dhcp_ipaddr=$(echo $dhcp_addr|cut -d'*' -f2) if [ -n "$dhcp_ipaddr" ]; then dhcp_ipaddr_net="$(ipcalc $dhcp_ipaddr $DHCPWIFIMSK 2>/dev/null |grep "NETWORK"| cut -d'=' -f2)" if [ -n "$dhcp_ipaddr_net" ] && [ "$dhcp_ipaddr_net" != "$DHCPWIFINET" ]; then continue; fi fi if [ -z "$(echo $new_maclist | grep $dhcp_macaddr)" ]; then new_maclist="$new_maclist $dhcp_macaddr" fi done number=1 for addr in $new_maclist; do allow=$(echo $maclist | grep $addr) echo "
" cat<<EOF
EOF echo "

$addr

" echo "
"$(if [ -f /var/run/dhcp.leases ]; then awk -v addr="$addr" '$2 == addr {print $3}' /var/run/dhcp.leases; fi)"

" echo "
"$(if [ -f /var/run/dhcp.leases ]; then awk -v addr="$addr" '$2 == addr {print $4}' /var/run/dhcp.leases; fi)"

" : $((number++)) done cat<<EOF
| MAC hinzufügen:

EOF fi . ${0%/*}/cgi-bin-post.sh