[[Vorlage(archiviert, )]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Programme_starten: Starten von Programmen] [:sudo: Root-Rechte] }}} [[Bild(Wiki/Icons/terminal.png, 56, align=left)]] [[Inhaltsverzeichnis(2)]] In diesem Artikel werden verschiedene Skripte beschrieben, mit denen unter Ubuntu und auch anderen Linux-Distributionen bei Bedarf verschiedene WLAN-Router für diverse Einsatzszenarien konfiguriert werden können. Die jeweiligen Skripte wurden ebenfalls auf dem Raspberry Pi™ (Version ''B'') ausgiebig getestet. Basisartikel dazu ist [:WLAN_Router:]. Als Software werden beispielsweise [:Squid:], [:Privoxy:], [:WLAN_Router:hostapd:], [:iptables2:iptables], [:iw:], [:ISC-DHCPD:] und [:Netzwerkbrücke:bridge-utils:] verwendet. Diese Wiki-Artikel dienen als Grundlage und sollten bekannt sein. = Vorbereitungen = == Programme installieren == Die für die genannten Skriptvarianten gezeigten Programme müssen natürlich zuvor installiert [1] und ggf. konfiguriert werden. Entsprechende Vorlagen sind hier angegeben. ''skriptname.sh'' ist durch den tatsächlich gewünschten Namen zu ersetzen. == Skript anlegen == Anlegen und ausführbar machen eines Skripts über Terminal [2]: {{{#!vorlage befehl touch skriptname.sh chmod +x skriptname.sh }}} Anschließend kann man das erzeugte Skript mit einem Editor [3] bearbeiten und den gewünschten Code hier kopieren und einfügen. Teilweise enthalten die Skripte Kennwörter im Klartext. Daher den Zugang zum verwendeten System und/oder die Zugriffsrechte entsprechend anpassen. Siehe auch [:chmod:]. == Skript starten und beenden == Die Skripte sind vom Grundgerüst her identisch aufgebaut. Verschiedene Startparameter sind möglich. Auch hier ist ''skriptname.sh'' durch den tatsächlich verwendeten Namen zu ersetzen. Skript mit den gewünschten Startoptionen aufrufen [4][5]: {{{#!vorlage befehl sudo ./skriptname.sh -start # startet das Skript und die Konfiguration sudo ./skriptname.sh -stop # startet das Skript, beendet die Konfiguration und die verwendeten Dienste sudo ./skriptname.sh # ohne Option identisch wie -stop sudo ./skriptname.sh -h # gibt eine kurze Hilfe zur Syntax aus }}} == Skript konfigurieren == Bei jedem Skript können verschiedene Optionen verändert und Variablen gesetzt werden. Diese sind durch Kommentarzeilen entsprechend beschrieben. Im Normalfall müssen nur bestimmte IP-Adressen des eigenen Routers, Gateways usw. angepasst werden. Variablen und Optionen können im Skript im Bereich zwischen ... {{{ ## freie Variablen ... ... ## Ende freie Variablen }}} ... bearbeitet und angepasst werden. == Dienste konfigurieren == Alle hier verwendeten [:Dienste:] wie z.B. Squid oder der isc-dhcpd-Server werden durch das jeweilige Skript gestartet und auch wieder beendet. Werden diese Dienste nicht direkt bei Systemstart benötigt, so sollte man diese grundsätzlich deaktivieren, um Speicher und Rechenleistung nicht unnötig zu verschwenden oder ungewollte Systemfunktionen zu vermeiden. Dies erfolgt über [:Dienste:Runlevel]. Dienste bei Systemstart deaktivieren: {{{#!vorlage befehl sudo update-rc.d DIENST disable }}} Das entsprechende Beispiel, um Squid Version 3.x nicht automatisch bei Systemstart auszuführen: {{{#!vorlage befehl sudo update-rc.d squid3 disable }}} Für die jeweils benötigten und installierten Dienste geht man entsprechend vor. == Network-Manager deaktivieren == Wer ein Skript auf einem Desktop-System mit grafischer Oberfläche und dem [:Network-Manager:] testen oder verwenden möchte, muss diesen vorab deaktivieren, ansonsten wird die Netzwerkkonfiguration des Systems blockiert. Bestehende Verbindungen werden dabei getrennt. {{{#!vorlage befehl sudo service network-manager stop }}} Der Network-Manager kann anschließend wieder aktiviert werden: {{{#!vorlage befehl sudo service network-manager start }}} = Skripte = == WLAN-Router mit Gast-Netzwerk == Erforderliche Programme: * [:WLAN_Router:hostapd] * [:Netzwerkbrücke:bridge-utils] * [:iw:] Funktionsbeschreibung: * LAN/WLAN-Router im Bridged-Mode * Ethernetschnittstelle 1 verbindet zum vorhandenen Router (Internetanbindung) * WLAN-Accesspoint * zweiter unabhängiger WLAN-Accesspoint mit eigenem Kennwort und eigenem IP-Adressbereich für einen Gast-Zugang * Konfiguration mit einem (nicht alle Adapter bzw. Treiber unterstützen diese Funktion) oder zwei unabhängigen WLAN-Adaptern möglich * separater DHCP-Server für WLAN 2, also den Gast-Zugang (dnsmasq_base) * kein Zugriff auf WLAN-Netzwerk 1 und Ethernet 2 möglich (NAT/iptables) * Ethernetschnittstelle 2 für das lokale Netzwerk (optional) * DHCP-Server für das WLAN-Netz 1 und Ethernet 2 bleibt der vorhandenen Router * alle Clients (WLAN 1 und Ethernet 1/2) befinden sich im selben Netzwerk (Bridge) Erfolgreich getestet mit einem TP-Link TL-WN822N v1.1 USB WLAN-Adapter mit Atheros-Otus Chipsatz als einziger WLAN-Adapter. Geräte-ID: `0CF3:1002`, Treibermodul `carl9170`. * '''instant_AP-bridge_vWLAN.sh''': {{{#!code bash #!/bin/bash ## Instant WLAN Access-Point an Ethernet Router with transparent bridged interfaces and VLAN ## (WLAN-Guest Accesspoint) ## for Raspberry Pi™ with Raspian and other Linux based Systems ## ## elektronenblitz63 ubuntuusers.de 2013 ## published under GPL v3 ## ## Version 1.7.1.5bvw / 17. Oktober 2013 ## ## have fun :-) ## freie Variablen ## Source-Interface / WAN-Schnittstelle ## durch die interfaces gesteuerte Schnittstelle für die Internetverbindung ## Bezeichnung ggf. anpassen ## Standard eth0 / Ethernet sourceiface=eth0 ## Bridge-Konfiguration bridgeiface=br0 forward_delay=2 stp=1 brageing=10000 brage=40 braddress=192.168.178.6 brbroadcast=192.168.178.255 brnetmask=255.255.255.0 briptablemasq=192.168.178.0/24 ## IP-Adresse des Routers/Gateway wangateway=192.168.178.1 ## manuelle DNS-Konfiguration aktiviert (1) oder deaktiviert (0) (Standard) manDNS=0 # manuelle DNS-Konfiguration sys_domain="domain fritz.box" sys_search="search fritz.box" sys_dns0="nameserver 192.168.178.1" ## optional DNS 2 & 3 aktivieren ## Beispiel # sys_dns1="nameserver 8.8.4.4" # sys_dns2="nameserver 8.8.8.8" sys_dns1="" sys_dns2="" ## Konfiguration der WLAN-Schnittstelle, die den Accesspoint erzeugt ## Bezeichnung ggf. anpassen wlaniface=wlan0 ## Konfiguration der virtuellen WLAN-Schnittstelle ## Bezeichnung ggf. anpassen vlaniface=wlan1 vaddress=192.168.3.1 vbroadcast=192.168.3.255 vnetmask=255.255.255.0 viptablemask=192.168.3.0/24 ## dnsmasq-base Konfiguration ## Start- Endadresse / lease vlan_startaddress=192.168.3.10 vlan_endaddress=192.168.3.15 vlan_leasetime=infinite ## Konfiguration der zweiten lokalen LAN-Schnittstelle ## Bezeichnung ggf. anpassen locallan=eth1 ## lokales LAN aktivieren (1), oder nicht (0) ## abschalten, sollte keine zweite Ethernetschnittstelle vorhanden sein locallan_on=0 ## erste WLAN-Schnittstelle wlan0 wlan_modul="carl9170" # WLAN tx power in dBm wlan0 txpower=15 ## WLAN-Interface 2 virtuell (0) oder physikalisch (zweiter WLAN-Adapter) (1) second_phy=0 ## zweite WLAN-Schnittstelle wlan1 (0ptional) ## nur wirksam bei second_phy=1 wlan_modul2="rt2800usb" # Sendeleistung für WLAN-Adapter 2 (wlan1) einstellen # nur bei zweitem WLAN-Adapter wirksam # tx power in dBm txpower2=15 ## Regionseinstellung regcode="DE" regdelay=3 # Lease-Time DHCP-Server dnsmasq_base für das Gastnetzwerk (wlan1) leasetime=infinite ## Steuerung hostapd Schnittstelle wlan0 hostapdservice="hostapd -B" hostapdconf="/etc/hostapd_vlan.conf" ## Konfigurationsdatei hostapd Schnittstelle wlan1 (optional) ## nur wirksam bei second_phy=1 hostapdconf1="/etc/hostapd_vlan1.conf" ## Iptables-Filter bei Programmende löschen # Standard=1 # bei pppoe-Verbindungen oder Bridge-Konfiguration auf 0 setzen delfilter=1 ## zeige Konfiguration nach Ablauf des Skripts (1/0) showconfig=1 ## Ende freie Variablen # Skript if [ "$1" = "-h" ]; then echo Verwendung: instant_AP-bridge.sh [-start] [-stop] [-h] echo Syntax: echo "sudo ./instant_AP-bridge_vWLAN.sh -start startet den AP" echo "sudo ./instant_AP-bridge_vWLAN.sh -stop beendet die Konfiguration und schließt den AP" echo "sudo ./instant_AP-bridge_vWLAN.sh beendet die Konfiguration und schließt den AP" echo "Ende" exit fi echo -e "Konfiguration ausführen ...\n" # Konfiguration löschen, Dienste stoppen sleep 1 service hostapd stop /usr/bin/killall hostapd /usr/bin/killall dnsmasq squid /bin/rm -f /var/run/hostapd/$wlaniface /bin/rm -f /var/run/hostapd/$wlaniface1 /usr/bin/killall dnsmasq wpa_supplicant wpa_cli wpa_action /sbin/sysctl -w net.ipv4.ip_forward=0 ## Bridge löschen echo "lösche Bridge und Konfiguration ..." /sbin/ifconfig br0 down /sbin/brctl delif $bridgeiface $sourceiface /sbin/brctl delif $bridgeiface $locallan /sbin/ifconfig $bridgeiface down /sbin/brctl delbr $bridgeiface echo "entferne WAN-Konfiguration ..." /sbin/ifconfig $sourceiface 0.0.0.0 sleep 1 /sbin/ifconfig $sourceiface down echo "entferne WLAN-Konfiguration ..." /sbin/iwconfig $wlaniface mode managed sleep 1 /sbin/ifconfig $wlaniface 0.0.0.0 sleep 1 /sbin/ifconfig $wlaniface down sleep 1 if [ "$delfilter" = "1" ]; then echo "lösche iptables-Filter ..." /sbin/iptables -F /sbin/iptables -X /sbin/iptables -t nat -F /sbin/modprobe -rfv iptable_nat ipt_MASQUERADE xt_conntrack iptable_filter fi echo "Router & WLAN Access-Point Konfiguration beendet." if [ "$1" != "-start" ]; then echo "stoppe alle Dienste, und Verbindungen ..." exit fi ## start Konfiguration echo -e "Starte alle Dienste, und Verbindungen ...\n" ## reintialisiere WLAN-Adapter echo "WLAN-Treibermodul Adapter 1: $wlan_modul" /sbin/modprobe -rf $wlan_modul $wlan_modul2 sleep 1 echo -e "WLAN-Adapter 1 reinitialisieren ...\n" /sbin/modprobe -rf $wlan_modul sleep 1 /sbin/modprobe $wlan_modul sleep 1 ## reintialisiere WLAN-Adapter 2 (optional) if [ "$second_phy" = "1" ]; then echo "WLAN-Treibermodul Adapter 2: $wlan_modul2" echo -e "WLAN-Adapter 2 reinitialisieren ...\n" /sbin/modprobe $wlan_modul2 sleep 1 fi ## MAC-Adress Konfiguration wlan-Adapter 1 für hostapd currentmacset=$(cat $hostapdconf | grep bssid) currentmac=$(ifconfig $wlaniface | grep -i link | awk {'print $6'}) echo "erkannte MAC-Adresse des WLAN-Adapters 1:" $currentmac sleep 1 echo -e "ändere hostapd-Konfiguration für WLAN-Adapter 1 ($wlaniface)\n" /bin/sed -i "s/$currentmacset/bssid=$currentmac/g" $hostapdconf ## initialize WAN-Port /sbin/ifconfig $sourceiface up sleep 1 if [ "$second_phy" = "1" ]; then ## MAC-Adress Konfiguration wlan-Adapter 2 für hostapd currentmacset2=$(cat $hostapdconf1 | grep bssid) currentmac2=$(ifconfig $vlaniface | grep -i link | awk {'print $6'}) echo "erkannte MAC-Adresse des WLAN-Adapters 1:" $currentmac2 sleep 1 echo -e "ändere hostapd-Konfiguration für WLAN-Adapter 2 ($vlaniface)\n" /bin/sed -i "s/$currentmacset2/bssid=$currentmac2/g" $hostapdconf1 fi ## initialize WAN-Port /sbin/ifconfig $sourceiface up sleep 1 ## Sendeleistung / deaktivate WLAN-Powermanagement / set Tx-Power echo "deaktiviere Stromsparmechanismen für $wlaniface" /sbin/iw dev $wlaniface set power_save off sleep 1 echo -e "setze Sendeleistung des WLAN-Adapters $wlaniface ($txpower"dBm")\n" /sbin/iwconfig $wlaniface txpower $txpower sleep 1 if [ "$second_phy" = "1" ]; then echo "deaktiviere Stromsparmechanismen für $vlaniface" /sbin/iw dev $vlaniface set power_save off sleep 2 echo -e "setze Sendeleistung des WLAN-Adapters $vlaniface ($txpower2"dBm")\n" /sbin/iwconfig $vlaniface txpower $txpower2 sleep 1 fi ## Regionseinstellung echo -e "setze Regionseinstellung des Systems: $regcode\n" /sbin/iw reg set $regcode sleep $regdelay # aut. Dienste nach Reinitialisierung des WLAN-Adapters beenden /usr/bin/killall wpa_supplicant wpa_cli wpa_action ifplugd ## start hostapd echo -e "Starte hostapd-Service\n" $hostapdservice $hostapdconf sleep 1 echo ## start hostapd für WLAN-Adapter 2 (optional) if [ "$second_phy" = "1" ]; then echo -e "Starte hostapd-Service\n" $hostapdservice $hostapdconf1 sleep 1 echo fi ## Bridge konfigurieren /sbin/brctl addif $bridgeiface $sourceiface if [ "$locallan_on" = "1" ]; then /sbin/brctl addif $bridgeiface $locallan echo -e "Ethernerschnittstelle 2 aktiviert.\n" fi /sbin/brctl setfd $bridgeiface $forward_delay /sbin/brctl stp $bridgeiface $stp ## Optional aktivieren # /sbin/brctl setageing $bridgeiface $brageing # /sbin/brctl setmaxage $bridgeiface $brage ## initialize Bridge-Port echo "Bridge-Schnittstelle initialisieren (statisch)" echo -e "Interface: $bridgeiface IP-Adresse: $braddress Broadcast: $brbroadcast Netzmaske: $brnetmask\n" /sbin/ifconfig $bridgeiface $braddress broadcast $brbroadcast netmask $brnetmask /sbin/route add default gw $wangateway metric 0 dev $bridgeiface sleep 1 /sbin/ifconfig $sourceiface up ## vLAN-Schnittstelle statisch konfigurieren echo "VLAN-Schnittstelle initialisieren (statisch)" echo -e "Interface: $vlaniface IP-Adresse: $vaddress Broadcast: $vbroadcast Netzmaske: $vnetmask\n" /sbin/ifconfig $vlaniface $vaddress broadcast $vbroadcast netmask $vnetmask sleep 1 ## Netze trennen / NAT / Ping unterbinden /sbin/iptables -A INPUT -p icmp --icmp-type 8 -i $vlaniface -j DROP /sbin/iptables -t nat -A POSTROUTING -o $bridgeiface -j MASQUERADE /sbin/iptables -A FORWARD -i $vlaniface --dst $briptablemasq -j DROP ## Port forwarding /sbin/sysctl -w net.ipv4.ip_forward=1 ## starting DHCP-Service VLAN echo -e "starte dnsmasq-base\n" echo "DHCP-Range dnsmasq-base ..." echo -e "$vlaniface Startadresse: $vlan_startaddress Endadresse: $vlan_endaddress Lease: $vlan_leasetime\n" /usr/sbin/dnsmasq -h -I $bridgeiface -i $vlaniface -F $vlan_startaddress,$vlan_endaddress,$vlan_leasetime sleep 1 echo "dnsmasq - Dienstekonfiguration:" ps aux | grep [d]ns echo ## DNS setzen ## verwende erkanntes Gateway echo "DNS-Konfiguration ..." if [ "$manDNS" = "0" ]; then echo -e "nameserver" $(route -n | grep UG | awk {'print $2'}) | tee /etc/resolv.conf echo else echo -e "$sys_domain\n$sys_search\n$sys_dns0\n$sys_dns1\n$sys_dns2" | tee /etc/resolv.conf sleep 1 echo fi ## Ausgabe der aktuellen Konfiguration if [ "$showconfig" = "1" ]; then echo -e "System DNS-Check und Routing:" cat /etc/resolv.conf echo /sbin/route -n echo echo -e "Konfiguration Bridge:\n" /sbin/ifconfig $bridgeiface | egrep 'Link|inet Adresse' echo /sbin/brctl show echo /sbin/brctl showmacs $bridgeiface echo /sbin/brctl showstp $bridgeiface echo echo -e "Konfiguration lokales WAN:\n" /sbin/ifconfig $sourceiface | egrep 'Link|inet Adresse' echo echo -e "Konfiguration lokales LAN:\n" /sbin/ifconfig $locallan | egrep 'Link|inet Adresse' echo echo "Konfiguration WLAN:" /sbin/ifconfig $wlaniface | egrep 'Link|inet Adresse' echo /sbin/iwconfig $wlaniface | egrep 'IEEE|Power|Mode' echo /sbin/iwconfig mon.$wlaniface /sbin/ifconfig $vlaniface | egrep 'Link|inet Adresse' echo /sbin/iwconfig $vlaniface | egrep 'IEEE|Power|Mode' echo ## Ausgabe der aktuellen Konfiguration echo -e "Regionseinstellung des/der WLAN-Adapters:\n" /sbin/iw reg get echo echo "Dienstestatus:" service hostapd status if [ "$second_phy" = "1" ]; then ps aux | grep [h]ostapd fi else exit 0 fi }}} * Dienstekonfiguration via '''/etc/hostapd_vlan.conf''' bei Verwendung eines einzigen WLAN-Adapters. Der Eintrag `bssid=xx:xx:xx:xx:xx:xx` wird durch das Skript mit der tatsächlichen MAC-Adresse des WLAN-Adapters überschrieben:{{{ # WLAN0-Konfiguration interface=wlan0 bssid=b2:af:41:3a:eb:b5 driver=nl80211 bridge=br0 # WLAN-Konfiguration ssid=WLAN_AP channel=4 # Verschlüsselung / hier rein WPA2 wpa=2 rsn_preauth=1 rsn_preauth_interfaces=wlan0 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP # Zugangsschlüssel (PSK) / hier in Klartext (ASCII) wpa_passphrase=1234567890abcdefghijklmn # WLAN1-Konfiguration / VLAN bss=wlan1 driver=nl80211 ssid=Guest_Net # Verschlüsselung / hier rein WPA2 wpa=2 rsn_preauth=1 rsn_preauth_interfaces=wlan0 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP # Zugangsschlüssel (PSK) / hier in Klartext (ASCII) wpa_passphrase=1234567890 # ESSID sichtbar ignore_broadcast_ssid=0 # Ländereinstellungen country_code=DE ieee80211d=1 # Übertragungsmodus hw_mode=g # Optionale Einstellungen # supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 # Draft-N Modus aktivieren / optional nur für entsprechende Karten # ieee80211n=1 # Übertragungsmodus / Bandbreite 40MHz # ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40] # Beacons beacon_int=100 dtim_period=2 # MAC-Authentifizierung macaddr_acl=0 # max. Anzahl der Clients max_num_sta=20 # Größe der Datenpakete/Begrenzung rts_threshold=2347 fragm_threshold=2346 # hostapd Log Einstellungen logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 # temporäre Konfigurationsdateien dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # Authentifizierungsoptionen auth_algs=3 # wmm-Funktionalität wmm_enabled=0 # Schlüsselintervalle / Standardkonfiguration wpa_group_rekey=600 wpa_ptk_rekey=600 wpa_gmk_rekey=86400 }}} Werden zwei WLAN-Adapter verwendet, so muss eine zweite Konfigurationsdatei für '''hostapd''' angelegt werden. Das Skript startet dann entsprechend eine weitere Instanz. * '''/etc/hostapd_vlan.conf''' für den ersten WLAN-Adapter. Der Eintrag `bssid=xx:xx:xx:xx:xx:xx` wird durch das Skript mit der tatsächlichen MAC-Adresse des ersten WLAN-Adapters überschrieben: {{{ # WLAN0-Konfiguration interface=wlan0 bssid=b2:af:41:3a:eb:b5 driver=nl80211 bridge=br0 # WLAN-Konfiguration ssid=WLAN_AP channel=1 # Verschlüsselung / hier rein WPA2 wpa=2 rsn_preauth=1 rsn_preauth_interfaces=wlan0 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP # Zugangsschlüssel (PSK) / hier in Klartext (ASCII) wpa_passphrase=1234567890abcdefghijklmn # ESSID sichtbar ignore_broadcast_ssid=0 # Ländereinstellungen country_code=DE ieee80211d=1 # Übertragungsmodus hw_mode=g # Optionale Einstellungen # supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 # Draft-N Modus aktivieren / optional nur für entsprechende Karten # ieee80211n=1 # Übertragungsmodus / Bandbreite 40MHz # ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40] # Beacons beacon_int=100 dtim_period=2 # MAC-Authentifizierung macaddr_acl=0 # max. Anzahl der Clients max_num_sta=20 # Größe der Datenpakete/Begrenzung rts_threshold=2347 fragm_threshold=2346 # hostapd Log Einstellungen logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 # temporäre Konfigurationsdateien dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # Authentifizierungsoptionen auth_algs=3 # wmm-Funktionalität wmm_enabled=0 # Schlüsselintervalle / Standardkonfiguration wpa_group_rekey=600 wpa_ptk_rekey=600 wpa_gmk_rekey=86400 }}} * '''/etc/hostapd_vlan1.conf''' für den zweiten WLAN-Adapter. Der Eintrag `bssid=xx:xx:xx:xx:xx:xx` wird durch das Skript mit der tatsächlichen MAC-Adresse des zweiten WLAN-Adapters überschrieben: {{{ # WLAN0-Konfiguration interface=wlan1 bssid=b2:af:41:3a:eb:b5 driver=nl80211 # WLAN-Konfiguration ssid=Guest_Net channel=11 # Verschlüsselung / hier rein WPA2 wpa=2 rsn_preauth=1 rsn_preauth_interfaces=wlan0 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP # Zugangsschlüssel (PSK) / hier in Klartext (ASCII) wpa_passphrase=1234567890 # ESSID sichtbar ignore_broadcast_ssid=0 # Ländereinstellungen country_code=DE ieee80211d=1 # Übertragungsmodus hw_mode=g # Optionale Einstellungen # supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 # Draft-N Modus aktivieren / optional nur für entsprechende Karten # ieee80211n=1 # Übertragungsmodus / Bandbreite 40MHz # ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40] # Beacons beacon_int=100 dtim_period=2 # MAC-Authentifizierung macaddr_acl=0 # max. Anzahl der Clients max_num_sta=20 # Größe der Datenpakete/Begrenzung rts_threshold=2347 fragm_threshold=2346 # hostapd Log Einstellungen logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 # temporäre Konfigurationsdateien dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # Authentifizierungsoptionen auth_algs=3 # wmm-Funktionalität wmm_enabled=0 # Schlüsselintervalle / Standardkonfiguration wpa_group_rekey=600 wpa_ptk_rekey=600 wpa_gmk_rekey=86400 }}} == WLAN-Repeater == Erforderliche Programme: * [:WLAN_Router:hostapd] * [:ISC-DHCPD:] (Server) * [:Netzwerkbrücke:bridge-utils] * [:iw:] Funktionsbeschreibung: * LAN/WLAN-Router mit einem einzigen oder alternativ zwei WLAN-Adaptern * nur wenige Adapter unterstützen ein virtuelles Interface im Infrastrukturmodus neben der AP-Funktion * erfolgreich getestet mit einem TP-Link TL-WN822N v1.1 USB WLAN-Adapter mit Atheros-Otus Chipsatz als einzigen WLAN-Adapter. Geräte-ID: `0CF3:1002`, Treibermodul `carl9170`. * Konstrukt arbeitet quasi als Bridge, ist somit mit jedem WLAN-Accesspoint kompatibel * WLAN-Accesspoint über WLAN-Interface 1 * separater DHCP-Server (isc-dhcpd-server) * WLAN-Interface 2 verbindet zum vorhandenen Router (Internetanbindung im Infrastruktur-Modus) * Ethernetschnittstelle 1 für das lokale Netzwerk * alle Clients (WLAN 1 und Ethernet 1) befinden sich im selben Netzwerk * '''instant_AP-WLAN_Bridge.sh''': {{{#!code bash #!/bin/bash ## Instant WLAN Access-Point and Ethernet Router with transparent bridged interfaces ## (Wireless-Bridge) ## for RaspberryPi™ with Raspbian and other Linux based Systems ## ## elektronenblitz63 ubuntuusers.de 2013 ## published under GPL v3 ## ## Version 1.7.1.3wb / 16. Oktober 2013 ## have fun :-) ## freie Variablen ## Accesspoint Konfiguration für den Verbindungsaufbau zum vorhandenen WLAN # SSID (Name) des WLAN Accesspoints eintragen ssid="Deine_WLAN_SSID" # MAC-Adresse des WLAN Accesspoints eintragen # Beispiel: # mac="00:15:0E:31:7A:1A" mac="00:15:0E:31:7A:1A" # Einstellungen zur Verschlüsselung (WPA1 und/oder WPA2) # die Vorgabe deckt im Normalfall alle Konfigurationsmöglichkeiten ab # Konfiguration wpa-supplicant proto="WPA RSN" key_mgmt="WPA-PSK" pairwise="TKIP CCMP" group="TKIP CCMP" # WPA1 - WPA2 - WPA1/2 Verschlüsselung # Zugangskennwort in Klartext (WPA1/2-Zugangsschlüssel / PSK) psk="Dein_WLAN_Kennwort" ## Konfiguration wpa_supplicant # Einstellungen müssen in der Regel nicht angepasst werden configfile="wpa_supplicant.tmp" ctrliface="ctrl_interface=/var/run/wpa_supplicant" eapolv="eapol_version=1" apscan="ap_scan=1" # Pause vor dem Start der Konfiguration / Wert ggf. erhöhen wpa_delay=4 ## Treiber für wpa_supplicant ## wext oder nl80211 wpadriver="wext" ## Bridge-Konfiguration bridgeiface=br0 forward_delay=2 stp=1 brageing=10000 brage=40 braddress=192.168.3.1 brbroadcast=192.168.3.255 brnetmask=255.255.255.0 wangateway=192.168.3.1 iptablemask=192.168.3.0/24 ## DHCP-Server Einstellungen ## isc-dhcpd Konfiguration isc_serverconf="/etc/default/isc-dhcp-server" ## isc-dhcpd Start- Endadresse / Options isc_configfile="/etc/dhcp/dhcpd.conf" isc_subnet=192.168.3.0 isc_netmask=255.255.255.0 isc_startaddress=192.168.3.10 isc_endaddress=192.168.3.20 isc_leasetime=infinite # isc-dhcpd Optionen / Vorgabe nicht ändern isc_option0="option routers" isc_option1="option domain-name-servers" ## DNS-Server ## mehrere, durch Komma getrennte Einträge sind möglich dns_ip=192.168.178.1 ## Konfiguration der WLAN-Schnittstelle, welche die Verbindung zum Router aufbaut ## Bezeichnung ggf. anpassen wlaniface=wlan0 # Stromsparmechanismen WLAN (off/on) powersave=off ## WLAN-Interface 2 ## virtuelles Interface - wird vom Skript erzeugt wlaniface2=wlan1 # WLAN statisch oder dynamisch (1/0) (1 DHCP/Standard) konfigurieren wlan2_dhcp=1 # statische Konfiguration (Optional) wlan2_address=192.168.178.5 wlan2_broadcast=192.168.5.255 wlan2_netmask=255.255.255.0 wlan2_gateway=192.168.178.1 ## manuelle DNS-Konfiguration aktiviert (1) oder deaktiviert (0) (Standard) manDNS=0 # manuelle DNS-Konfiguration sys_domain="domain fritz.box" sys_search="search fritz.box" sys_dns0="nameserver 192.168.178.1" ## optional DNS 2 & 3 aktivieren ## Beispiel # sys_dns1="nameserver 8.8.4.4" # sys_dns2="nameserver 8.8.8.8" sys_dns1="" sys_dns2="" ## WLAN-Interface 2 virtuell (0) oder physikalisch (zweiter WLAN-Adapter) (1) second_phy=0 ## zweite WLAN-Schnittstelle wlan1 (0ptional) ## nur wirksam bei second_phy=1 wlan_modul2="rt2800usb" # Anpassung der MAC-Adresse WLAN-Interface 2 # nur bei virtuellem Interface wirksam lastoctet=ff ## Bezeichnung ggf. anpassen locallan=eth0 # Sendeleistung für WLAN-Adapter 1 (wlan0) einstellen # tx power in dBm txpower=15 # Sendeleistung für WLAN-Adapter 2 (wlan1) einstellen # nur bei zweitem WLAN-Adapter wirksam # tx power in dBm txpower2=15 ## Regionseinstellung regcode="DE" # Pause zur Konfigurationsübernahme / Wert ggf. erhöhen regdelay=3 ## Steuerung hostapd hostapdservice="hostapd -B" hostapdconf="/etc/hostapd_wlanbridge.conf" ## Iptables-Filter bei Programmende löschen (1/0) # Standard=1 delfilter=1 ## zeige Konfiguration nach Ablauf des Skripts (1/0) showconfig=1 ##Konfigurationsdatei Info zuletzt erkannter WLAN-Adapter/Treibermodul wlan_adapterfile="wlan_adapter.txt" ## Ende freie Variablen # Skript if [ "$1" = "-h" ]; then echo Verwendung: instant_AP-bridge.sh [-start] [-start -D] [-stop] [-h] echo Syntax: echo "sudo ./instant_AP-Bridge.sh -start startet den AP" echo "sudo ./instant_AP-Bridge.sh -stop beendet die Konfiguration und schließt den AP" echo "sudo ./instant_AP-Bridge.sh beendet die Konfiguration und schließt den AP" echo "Ende" exit fi ## manuelle DNS-Konfiguration abfragen if [ "$2" = "-D" ]; then manDNS=1 echo -e "manuelle DNS_Konfiguration aktiviert.\n" else manDNS=0 fi echo -e "Konfiguration ausführen ...\n" # Konfiguration löschen, Dienste stoppen sleep 1 service hostapd stop service isc-dhcp-server stop /bin/rm -f /var/run/hostapd/$wlaniface /usr/bin/killall dnsmasq dhclient /usr/bin/killall wpa_supplicant wpa_cli wpa_action isc-dhcp-server hostapd /bin/rm /var/run/wpa_supplicant/* /sbin/sysctl -w net.ipv4.ip_forward=0 ## Bridge löschen echo "lösche Bridge und Konfiguration ..." /sbin/ifconfig br0 down /sbin/brctl delif $bridgeiface $wlaniface /sbin/brctl delif $bridgeiface $locallan /sbin/ifconfig $bridgeiface down /sbin/brctl delbr $bridgeiface echo "entferne WLAN-Konfiguration ..." /sbin/iwconfig $wlaniface mode managed sleep 1 if [ "$second_phy" = "0" ]; then iw dev $wlaniface2 del fi if [ "$delfilter" = "1" ]; then echo "lösche iptables-Filter ..." /sbin/iptables -F /sbin/iptables -X /sbin/iptables -t nat -F /sbin/modprobe -rfv iptable_nat ipt_MASQUERADE xt_conntrack iptable_filter fi echo "Bridge & WLAN Access-Point Konfiguration beendet." if [ "$1" != "-start" ]; then echo "stoppe alle Dienste, und Verbindungen ..." exit fi ## start Konfiguration echo -e "Starte alle Dienste, und Verbindungen ...\n" ## WLAN-Verbindung vorbereiten echo -e "\nlege Konfigurationsdatei $configfile an.\n" echo $ctrliface > $configfile echo $eapolv >> $configfile echo $apscan >> $configfile echo 'network={' >> $configfile echo ssid='"'$ssid'"' >> $configfile echo bssid=$mac >> $configfile echo proto=$proto >> $configfile echo key_mgmt=$key_mgmt >> $configfile echo pairwise=$pairwise>> $configfile echo group=$group >> $configfile echo psk='"'$psk'"' >> $configfile echo '}' >> $configfile ## isc-dhcpd Konfiguration vorbereiten echo -e "\nlege Konfigurationsdatei $isc_serverconf an:\n" echo -e "DHCPD_CONF=$isc_configfile\nINTERFACES="$bridgeiface"" | tee $isc_serverconf echo -e "\nlege Konfigurationsdatei $isc_configfile an:\n" echo -e "subnet $isc_subnet netmask $isc_netmask { range $isc_startaddress $isc_endaddress; }\n$isc_option0 $braddress;\n$isc_option1 $dns_ip;" | tee $isc_configfile echo ## Modulerkennung WLAN wlan_modul=$(find /sys/class/net/$wlaniface/device/driver/module/drivers/ | grep usb | cut -c 55-70) lastknownmodule=$(cat $wlan_adapterfile) if [ "$second_phy" = "1" ]; then wlan_modul2=$(find /sys/class/net/$wlaniface2/device/driver/module/drivers/ | grep usb | cut -c 55-70) fi if [ "$lastknownmodule" = "" ]; then lastknownmodule="none" fi ## reinitialisiere WLAN-Adapter if [ "$second_phy" = "0" ]; then echo "WLAN-Treibermodul $wlan_modul erkannt, vorheriges Modul: $lastknownmodule" echo -e "WLAN-Adapter reinitialisieren ...\n" if [ "$wlan_modul" = "$lastknownmodule" ]; then /sbin/modprobe -rf $wlan_modul sleep 1 /sbin/modprobe $wlan_modul sleep 1 else /sbin/modprobe -rf $lastknownmodule sleep 1 /sbin/modprobe -rf $wlan_modul sleep 1 /sbin/modprobe $wlan_modul sleep 1 echo $wlan_modul > $wlan_adapterfile sleep 1 fi fi if [ "$second_phy" = "1" ]; then echo "WLAN-Treibermodul 1 $wlan_modul erkannt" echo "WLAN-Treibermodul 2 $wlan_modul2 erkannt" /sbin/modprobe -rf $wlan_modul $wlan_modul2 sleep 1 echo "lade Module $wlan_modul $wlan_modul2" /sbin/modprobe $wlan_modul sleep 1 /sbin/modprobe $wlan_modul2 sleep 1 fi ## MAC-Adress Konfiguration WLAN-Interface if [ "$second_phy" = "0" ]; then currentmac=$(ifconfig $wlaniface | grep -i link | awk {'print $6'}) cutmac=$(ifconfig $wlaniface | grep -i link | awk {'print $6'} | cut -c 1-15) newmacaddress=$cutmac$lastoctet echo "erkannte MAC-Adresse des WLAN-Adapters" $currentmac sleep 1 fi ## deaktivate WLAN-Powermanagement / set Tx-Power echo "setze Stromsparmechanismen für $wlaniface (Powersave = $powersave)" /sbin/iw dev $wlaniface set power_save $powersave sleep 1 if [ "$second_phy" = "1" ]; then echo "setze Stromsparmechanismen für $wlaniface2 (Powersave = $powersave)" /sbin/iw dev $wlaniface2 set power_save $powersave sleep 1 echo "setze Sendeleistung des WLAN-Adapters $wlaniface2 ($txpower2"dBm")" /sbin/iwconfig $wlaniface2 txpower $txpower2 sleep 1 fi echo "setze Sendeleistung des WLAN-Adapters $wlaniface ($txpower"dBm")" /sbin/iwconfig $wlaniface txpower $txpower sleep 1 ## Regionseinstellung echo -e "setze Regionseinstellungen des Systems (Regionscode $regcode)\n" /sbin/iw reg set $regcode sleep $regdelay ## start hostapd echo "Starte hostapd-Service" $hostapdservice $hostapdconf sleep 1 echo ## zweite WLAN-Schnittstelle erzeugen if [ "$second_phy" = "0" ]; then ## WLAN-Schnittstellenerkennung wiphy=$(iw list | grep Wiphy | awk {'print $2'}) echo "suche WLAN-Interface ..." echo "physikalisch Schnittstelle $wiphy gefunden" echo "erzeuge zweites virtuelles WLAN-Interface $wlaniface2" /sbin/iw phy $wiphy interface add $wlaniface2 type managed sleep 1 ## MAC-Adresse ändern echo -e "ändere MAC-Adresse von $wlaniface2. Setze $newmacaddress\n" ip link set dev $wlaniface2 addr $newmacaddress sleep $wpa_delay else echo "verwende zweiten WLAN-Adapter $wlaniface2" fi ## starte WLAN-Verbindung zum Accesspoint echo "starte Verbindung zu WLAN-Accesspoint $mac - $ssid" echo "Using interface $wlaniface with hwaddr $newmacaddress" echo -e "einen Moment bitte, starte wpa_supplicant ...\n" /sbin/wpa_supplicant -D$wpadriver -i$wlaniface2 -c$configfile -B echo ## WLAN-Schnittstelle 2 konfigurieren if [ "$wlan2_dhcp" = "0" ]; then echo "WLAN-Schnittstelle 2 initialisieren (statisch)" echo -e "Interface: $wlaniface2 IP-Adresse: $wlan2_address Broadcast: $wlan2_broadcast Netzmaske: $wlan2_netmask\n" /sbin/ifconfig $wlaniface2 $wlan2_address broadcast $wlan2_broadcast netmask $wlan2_netmask /sbin/route add default gw $wlan2_gateway metric 0 dev $wlaniface2 ## DNS setzen ## verwende erkanntes Gateway echo "DNS-Konfiguration ..." if [ "$manDNS" = "0" ]; then echo -e "nameserver" $(route -n | grep UG | awk {'print $2'}) | tee /etc/resolv.conf echo else echo -e "$sys_domain\n$sys_search\n$sys_dns0\n$sys_dns1\n$sys_dns2" | tee /etc/resolv.conf sleep 1 echo fi echo -e "WLAN-Schnittstelle initialisieren (DHCP). Einen Moment bitte ...\n" /sbin/dhclient $wlaniface2 sleep 1 fi ## Bridge konfigurieren /sbin/brctl addif $bridgeiface $locallan /sbin/brctl setfd $bridgeiface $forward_delay /sbin/brctl stp $bridgeiface $stp ## Optional aktivieren # /sbin/brctl setageing $bridgeiface $brageing # /sbin/brctl setmaxage $bridgeiface $brage ## initialize Bridge-Port echo "Bridge-Schnittstelle initialisieren (statisch):" echo -e "Bridge: $bridgeiface IP-Adresse: $braddress Broadcast: $brbroadcast Netzmaske: $brnetmask\n" /sbin/ifconfig $bridgeiface $braddress broadcast $brbroadcast netmask $brnetmask /sbin/route add default gw $wangateway metric 1 dev $bridgeiface sleep 1 ## starting Services echo -e "starte isc-dhcp-server\n" echo "DHCP-Range isc-dhcp-server:" echo -e "Schnittstelle: $bridgeiface Startadresse: $isc_startaddress Endadresse: $isc_endaddress Lease: $isc_leasetime\n" service isc-dhcp-server start sleep 1 echo ## Forwarding & NAT /sbin/iptables -A FORWARD -o $wlaniface2 -i $bridgeiface -s $iptablemask -m conntrack --ctstate NEW -j ACCEPT /sbin/iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT /sbin/iptables -t nat -A POSTROUTING -o $wlaniface2 -j MASQUERADE echo "aktiviere Port-Forwarding ..." /sbin/sysctl -w net.ipv4.ip_forward=1 echo -e "Konfiguration beendet.\n" ## Ausgabe der aktuellen Konfiguration if [ "$showconfig" = "1" ]; then echo -e "System DNS-Check und Routing:" cat /etc/resolv.conf echo /sbin/route -n echo echo -e "Konfiguration Bridge:\n" /sbin/ifconfig $bridgeiface | egrep 'Link|inet Adresse' echo /sbin/brctl show echo /sbin/brctl showmacs $bridgeiface echo /sbin/brctl showstp $bridgeiface echo echo -e "Konfiguration lokales LAN (keine IP-Adresse im Bridged-Mode!):\n" /sbin/ifconfig $locallan | egrep 'Link|inet Adresse' echo echo -e "Konfiguration WLAN (keine IP-Adresse im Bridged-Mode!):\n" /sbin/ifconfig $wlaniface | egrep 'Link|inet Adresse' echo /sbin/iwconfig $wlaniface | egrep 'IEEE|Power|Mode' echo echo "Controll-Interface:" /sbin/iwconfig mon.$wlaniface echo "Virtuelles WLAN-Interface im Infrastruktur-Modus:" /sbin/ifconfig $wlaniface2 | egrep 'Link|inet Adresse' echo /sbin/iwconfig $wlaniface2 | egrep 'IEEE|Power|Mode' echo echo -e "Regionseinstellung des WLAN-Adapters:\n" /sbin/iw reg get echo echo "Dienstestatus:" service hostapd status service isc-dhcp-server status else exit 0 fi }}} Dienstekonfiguration: der isc-dhcp Server wird durch das Skript konfiguriert. Es empfiehlt sich, die ursprünglichen Konfigurationsdateien `/etc/default/isc-dhcp-server` und `/etc/dhcpd/dhcp.conf` vorab zu sichern. Die Einstellung für den Funkkanal (`channel=4`) muss mit dem Funkkanal des WLAN-Accesspoint übereinstimmen, wenn für die Konfiguration nur ein einziger WLAN-Adapter verwendet wird! Werden zwei Adapter verwendet, so sollte der Abstand zum Funkkanal des Accesspoints mindestens 5 Kanäle betragen, um Störungen zu vermeiden. * '''/etc/hostapd_wlanbridge.conf''': {{{ # Schnittstelle und Treiber interface=wlan0 driver=nl80211 bridge=br0 # WLAN-Konfiguration ssid=WLAN_AP channel=4 # ESSID sichtbar ignore_broadcast_ssid=0 # Ländereinstellungen country_code=DE ieee80211d=1 # Übertragungsmodus hw_mode=g # Optionale Einstellungen # supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 # Draft-N Modus aktivieren / optional nur für entsprechende Karten # ieee80211n=1 # Übertragungsmodus / Bandbreite 40MHz # ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40] # Beacons beacon_int=100 dtim_period=2 # MAC-Authentifizierung macaddr_acl=0 # max. Anzahl der Clients max_num_sta=20 # Größe der Datenpakete/Begrenzung rts_threshold=2347 fragm_threshold=2346 # hostapd Log Einstellungen logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 # temporäre Konfigurationsdateien dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # Authentifizierungsoptionen auth_algs=3 # wmm-Funktionalität wmm_enabled=0 # Verschlüsselung / hier rein WPA2 wpa=2 rsn_preauth=1 rsn_preauth_interfaces=wlan0 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP # Schlüsselintervalle / Standardkonfiguration wpa_group_rekey=600 wpa_ptk_rekey=600 wpa_gmk_rekey=86400 # Zugangsschlüssel (PSK) / hier in Klartext (ASCII) wpa_passphrase=1234567890abcdefghijklmn }}} [[Bild(/squid/squid-logo.png, 100, align=right)]] == WLAN-Router und Proxyserver == Erforderliche Programme: * [:Squid:] (Version 2.x oder 3.x) * [:Privoxy:] * [:WLAN_Router:hostapd] * [:Netzwerkbrücke:bridge-utils] * [:iw:] Funktionsbeschreibung: * LAN/WLAN-Router im Bridged-Mode mit transparente Bridge, transparentem Proxyserver Squid und Werbeblocker Privoxy * Ethernetschnittstelle 1 verbindet zum vorhandenen Router (Internetanbindung) * WLAN-Accesspoint * Ethernetschnittstelle 2 für das lokale Netzwerk (optional) * DHCP-Server bleibt der vorhandenen (FRITZ!Box-)Router * alle Clients befinden sich im selben Netzwerk * eine Proxy-Konfiguration der Clients ist nicht erforderlich, da transparente Konfiguration des Proxyservers * '''instant_AP-bridge_Proxy.sh''': {{{#!code bash #!/bin/bash ## Instant WLAN Access-Point an Ethernet Router with transparent bridged interfaces ## for Raspberry Pi™ with Raspian and other Linux based Systems ## ## with transparent Proxyserver Squid and Privoxy Contentfilter ## ## elektronenblitz63 ubuntuusers.de 2013 ## published under GPL v3 ## ## Version 1.7.1.4bp / 08. ONovember 2013 ## have fun :-) ## freie Variablen ## Source-Interface / WAN-Schnittstelle ## durch die interfaces gesteuerte Schnittstelle für die Internetverbindung ## Bezeichnung ggf. anpassen ## Standard eth0 / Ethernet sourceiface=eth0 ## Bridge-Konfiguration bridgeiface=br0 forward_delay=2 stp=1 # optional brageing=10000 brage=40 # WLBridge statisch (0) oder dynamisch (1) konfigurieren (0 statisch/Standard) # bedingt empfehlenswert, da so wechselnde IP-Adresse möglich # die IP-Adresseinstellungen in Squid, Privoxy und Tor müssenn dementsprechend angepasst werden. bridge_dhcp=0 ## Adresskonfiguration statisch / IP-Bereich ggf. anpassen # die IP-Adresseinstellungen in Squid, Privoxy müssenn dementsprechend angepasst werden. braddress=192.168.178.5 brbroadcast=192.168.178.255 brnetmask=255.255.255.0 ## IP-Adresse des Routers/Gateway wangateway=192.168.178.1 ## manuelle DNS-Konfiguration aktiviert (1) oder deaktiviert (0) (Standard) manDNS=1 # manuelle DNS-Konfiguration sys_domain="domain fritz.box" sys_search="search fritz.box" sys_dns0="nameserver 192.168.178.1" ## optional DNS 2 & 3 aktivieren ## Beispiel # sys_dns1="nameserver 8.8.4.4" # sys_dns2="nameserver 8.8.8.8" sys_dns1="" sys_dns2="" ## Konfiguration der WLAN-Schnittstelle die den Accesspoint erzeugt ## Bezeichnung ggf. anpassen wlaniface=wlan0 ## aut. Modulerkennung aktiviert (1) oder abgeschaltet (0) ## nur für RaspberryPi auto_ident=1 ## verwendetes WLAN-Modul bei auto_ident=0 eintragen wlan_modul="carl9170" ## Konfiguration der lokalen LAN-Schnittstelle ## Bezeichnung ggf. anpassen locallan=eth1 ## lokales LAN aktivieren (1), oder nicht (0) ## abschalten, sollte keine zweite Ethernetschnittstelle vorhanden sein locallan_on=1 # Sendeleistung einstellen # Optionen: auto|fixed|limit txpoweroption="limit" # tx power in dBm txpower=15 ## Regionseinstellung regcode="DE" regdelay=3 # Lease-Time leasetime=infinite ## Steuerung hostapd hostapdservice="hostapd -B" hostapdconf="/etc/hostapd_wlanbridge.conf" ## Iptables-Filter bei Programmende löschen # Standard=1 # bei pppoe-Verbindungen oder Bridge-Konfiguration auf 0 setzen delfilter=1 ## zeige Konfiguration nach Ablauf des Skripts (1/0) ## zur Diadnose bei Fehlfunktionen showconfig=1 ##Konfigurationsdatei Info zuletzt erkannter WLAN-Adapter/Treibermodul wlan_adapterfile="wlan_adapter.txt" ## verwendete Squid-version (v2.x - v3.x) ## squid v2.x - squid=squid ## squid v3.x - squid=squid3 squid=squid3 ## Ende freie Variablen # Skript if [ "$1" = "-h" ]; then echo Verwendung: instant_AP-bridge.sh [-start] [-stop] [-h] echo Syntax: echo "sudo ./instant_AP-bridge_Proxy.sh -start startet den AP" echo "sudo ./instant_AP-bridge_Proxy.sh -stop beendet die Konfiguration und schließt den AP" echo "sudo ./instant_AP-bridge_Proxy.sh beendet die Konfiguration und schließt den AP" echo "Ende" exit fi echo -e "Konfiguration ausführen\n" # Konfiguration löschen, Dienste stoppen sleep 1 service hostapd stop /usr/bin/killall hostapd service $squid stop service privoxy stop service tor stop /usr/bin/killall dnsmasq squid /bin/rm -f /var/run/hostapd/$wlaniface /sbin/sysctl -w net.ipv4.ip_forward=0 ## Bridge löschen echo "lösche Bridge und Konfiguration" /sbin/brctl delif $bridgeiface $sourceiface /sbin/brctl delif $bridgeiface $locallan /sbin/ifconfig $bridgeiface down /sbin/brctl delbr $bridgeiface echo "entferne WAN-Konfiguration" /sbin/ifconfig $sourceiface 0.0.0.0 sleep 1 /sbin/ifconfig $sourceiface down echo "entferne LAN-Konfiguration" /sbin/ifconfig $locallan 0.0.0.0 sleep 1 /sbin/ifconfig $locallan down echo "entferne WLAN-Konfiguration" /sbin/iwconfig $wlaniface mode managed sleep 1 /sbin/ifconfig $wlaniface 0.0.0.0 sleep 1 /sbin/ifconfig $wlaniface down sleep 2 if [ "$delfilter" = "1" ]; then echo "lösche iptables-Filter" /sbin/iptables -F /sbin/iptables -X /sbin/iptables -t nat -F /sbin/modprobe -rfv iptable_nat ipt_MASQUERADE xt_conntrack iptable_filter fi echo "Router & WLAN Access-Point Konfiguration beendet." if [ "$1" != "-start" ]; then echo "stoppe alle Dienste, und Verbindungen" exit fi ## start Konfiguration echo -e "Starte alle Dienste, und Verbindungen\n" ## Modulerkennung WLAN if [ "$auto_ident" = "1" ]; then wlan_modul=$(find /sys/class/net/$wlaniface/device/driver/module/drivers/ | grep usb | cut -c 55-70) lastknownmodule=$(cat $wlan_adapterfile) echo "WLAN-Treibermodul $wlan_modul erkannt, vorheriges Modul: $lastknownmodule" else echo "Autoerkennung des WLAN-Treibermodul deaktiviert." echo -e "verwendet $wlan_modul\n" echo $wlan_modul > $wlan_adapterfile fi lastknownmodule=$(cat $wlan_adapterfile) if [ "$lastknownmodule" = "" ]; then lastknownmodule="none" echo "WLAN-Treibermodul $wlan_modul erkannt, vorheriges Modul: $lastknownmodule" fi ## reinitialisiere WLAN-Adapter echo -e "WLAN-Adapter reinitialisieren ...\n" if [ "$wlan_modul" = "$lastknownmodule" ]; then /sbin/modprobe -rf $wlan_modul sleep 1 /sbin/modprobe $wlan_modul sleep 1 else /sbin/modprobe -rf $lastknownmodule sleep 1 /sbin/modprobe -rf $wlan_modul sleep 1 /sbin/modprobe $wlan_modul sleep 1 echo $wlan_modul > $wlan_adapterfile sleep 1 fi ## initialize WAN-Port /sbin/ifconfig $sourceiface up sleep 1 ## deaktivate WLAN-Powermanagement / set Tx-Power echo -e "deaktiviere Stromsparmechanismen für $wlaniface" /sbin/iw dev $wlaniface set power_save off sleep 1 echo -e "setze Sendeleistung des WLAN-Adapters $wlaniface" # /sbin/iw dev $wlaniface set txpower $txpoweroption $txpower /sbin/iwconfig $wlaniface txpower $txpower sleep 1 ## Regionseinstellung echo -e "setze Regionseinstellung des WLAN-Adapters $wlaniface" /sbin/iw reg set $regcode sleep $regdelay ## start hostapd echo -e "Starte hostapd-Service:\n" $hostapdservice $hostapdconf sleep 1 echo ## Bridge konfigurieren /sbin/brctl addif $bridgeiface $sourceiface if [ "$locallan_on" = "1" ]; then /sbin/brctl addif $bridgeiface $locallan echo -e "Ethernerschnittstelle 2 aktiviert.\n" fi /sbin/brctl setfd $bridgeiface $forward_delay /sbin/brctl stp $bridgeiface $stp ## Optional aktivierbar # /sbin/brctl setageing $bridgeiface $brageing # /sbin/brctl setmaxage $bridgeiface $brage ## initialize Bridge-Port if [ "$bridge_dhcp" = "0" ]; then echo "Bridge-Schnittstelle $bridgeiface initialisieren (statisch):" echo -e "Interfac: $bridgeiface IP-Adresse: $braddress Broadcast: $brbroadcast Netzmaske: $brnetmask" /sbin/ifconfig $bridgeiface $braddress broadcast $brbroadcast netmask $brnetmask /sbin/route add default gw $wangateway metric 0 dev $bridgeiface sleep 1 else echo -e "Bridge $bridgeiface automatisch initialisieren (DHCP). Einen Moment bitte ...\n" /sbin/dhclient $bridgeiface sleep 1 fi /sbin/ifconfig $sourceiface up ## Forwarding to squid /sbin/iptables -t nat -A PREROUTING -i $bridgeiface -p tcp --dport 80 -j REDIRECT --to-port 3128 ## optional aktivieren #/sbin/iptables -t nat -A PREROUTING -i $bridgeiface -p tcp --dport 22 -j REDIRECT --to-ports 3128 ## starting Services echo -e "starte Proxyserver Squid\n" service $squid start sleep 1 echo -e "Starte Privoxy\n" service privoxy start sleep 1 ## DNS setzen ## verwende erkanntes Gateway echo "DNS-Konfiguration ..." if [ "$manDNS" = "0" ]; then echo -e "nameserver" $(route -n | grep UG | awk {'print $2'}) | tee /etc/resolv.conf #echo -e "nameserver 192.168.178.5" | tee /etc/resolv.conf echo else echo -e "$sys_domain\n$sys_search\n$sys_dns0\n$sys_dns1\n$sys_dns2" | tee /etc/resolv.conf sleep 1 echo fi ## Ausgabe der aktuellen Konfiguration if [ "$showconfig" = "1" ]; then echo -e "System DNS-Check und Routing:" cat /etc/resolv.conf echo /sbin/route -n echo echo -e "Konfiguration Bridge:\n" /sbin/ifconfig $bridgeiface | egrep 'Link|inet Adresse' echo /sbin/brctl show echo /sbin/brctl showmacs $bridgeiface echo /sbin/brctl showstp $bridgeiface echo echo -e "Konfiguration lokales WAN:\n" /sbin/ifconfig $sourceiface | egrep 'Link|inet Adresse' echo echo -e "Konfiguration lokales LAN:\n" /sbin/ifconfig $locallan | egrep 'Link|inet Adresse' echo echo "Konfiguration WLAN:" /sbin/ifconfig $wlaniface | egrep 'Link|inet Adresse' echo /sbin/iwconfig $wlaniface | egrep 'IEEE|Power|Mode' echo /sbin/iwconfig mon.$wlaniface ## Ausgabe der aktuellen Konfiguration echo -e "Regionseinstellung des WLAN-Adapters:\n" /sbin/iw reg get echo echo "Iptables:" iptables -t nat -L echo echo "Dienstestatus:" service hostapd status service $squid status service privoxy status else exit 0 fi }}} * Dienstekonfiguration via '''/etc/hostapd_wlanbridge.conf''': {{{ # Schnittstelle und Treiber interface=wlan0 driver=nl80211 bridge=br0 # WLAN-Konfiguration ssid=WLAN_AP channel=4 # ESSID sichtbar ignore_broadcast_ssid=0 # Ländereinstellungen country_code=DE ieee80211d=1 # Übertragungsmodus hw_mode=g # Optionale Einstellungen # supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 # Draft-N Modus aktivieren / optional nur für entsprechende Karten # ieee80211n=1 # Übertragungsmodus / Bandbreite 40MHz # ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40] # Beacons beacon_int=100 dtim_period=2 # MAC-Authentifizierung macaddr_acl=0 # max. Anzahl der Clients max_num_sta=20 # Größe der Datenpakete/Begrenzung rts_threshold=2347 fragm_threshold=2346 # hostapd Log Einstellungen logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 # temporäre Konfigurationsdateien dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # Authentifizierungsoptionen auth_algs=3 # wmm-Funktionalität wmm_enabled=0 # Verschlüsselung / hier rein WPA2 wpa=2 rsn_preauth=1 rsn_preauth_interfaces=wlan0 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP # Schlüsselintervalle / Standardkonfiguration wpa_group_rekey=600 wpa_ptk_rekey=600 wpa_gmk_rekey=86400 # Zugangsschlüssel (PSK) / hier in Klartext (ASCII) wpa_passphrase=1234567890abcdefghijklmn }}} * '''/etc/squid3/squid.conf''' (hier für Squid v3.x, unter v2.x sehen die acl-Regeln für `localhost` etwas anders aus. Beachtet dazu die original `squid.conf` nach der Installation). Die Einstellungen für den verwendeten IP-Bereich im lokalen Netzwerk muss angepasst werden. Zusätzliche Funktionen und Filterregeln, wie zeitgesteuerte Berechtigungen für einzelne Clients usw. können natürlich nach Belieben hinzugefügt werden: {{{ # WELCOME TO SQUID 3.1.20 acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 # Example rule allowing access from your local networks. acl localnet src 192.168.0.0/24 # lokale Rechner freigegeben acl lokale_rechner src 192.168.178.0/24 http_access allow lokale_rechner acl SSL_ports port 443 # https acl SSL_ports port 563 # snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 20 # ftp acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager # Deny requests to certain unsafe ports http_access deny !Safe_ports # Deny CONNECT to other than secure SSL ports http_access deny CONNECT !SSL_ports # We strongly recommend the following be uncommented to protect innocent # web applications running on the proxy server who think the only # one who can access services on "localhost" is a local user #http_access deny to_localhost # Example rule allowing access from your local networks. http_access allow localhost #Allow ICP queries from local networks only icp_access allow localnet icp_access deny all # And finally deny all other access to this proxy http_access deny all # Squid normally listens to port 3128 http_port 3128 transparent # Leave coredumps in the first cache dir coredump_dir /var/spool/squid3 # Add any of your own refresh_pattern entries above these. refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 forwarded_for off via off # Weiterleitung auf privoxy cache_peer 127.0.0.1 parent 8118 7 no-query default }}} * '''/etc/privoxy/config''': {{{ # privoxy lauscht auf ... listen-address 127.0.0.1:8118 user-manual /usr/share/doc/privoxy/user-manual confdir /etc/privoxy logdir /var/log/privoxy forwarded-connect-retries 1 accept-intercepted-requests 0 allow-cgi-request-crunching 0 split-large-forms 0 keep-alive-timeout 5 socket-timeout 300 actionsfile match-all.action actionsfile default.action actionsfile user.action filterfile default.filter filterfile user.filter logfile logfile toggle 1 enable-remote-toggle 0 enable-remote-http-toggle 0 enable-edit-actions 0 enforce-blocks 0 buffer-limit 4096 }}} [[Bild(./Tor_logo1.png, 64, align=right)]] == Tor WLAN-Router (Onion-Router) == Erforderliche Programme: * [:Tor:] * [:WLAN_Router:hostapd] * [:Netzwerkbrücke:bridge-utils] * [:iw:] Funktionsbeschreibung: * LAN/WLAN-Router im Bridged-Mode mit transparenter Bridge und Anbindung an das Tor-Netzwerk * Ethernetschnittstelle 1 verbindet zum vorhandenen Router (Internetanbindung) * WLAN-Accesspoint * Ethernetschnittstelle 2 für das lokale Netzwerk (optional) * DHCP-Server beleibt der vorhandenen Router * alle Clients befinden sich im selben Netzwerk * eine Proxy-Konfiguration der Clients und verwendeten Internetbrowser ist nicht erforderlich, da transparente Konfiguration * Zeitsynchronisation über NTP-Server (optional) * '''instant_AP-bridge_Tor.sh''': {{{#!code bash #!/bin/bash ## Instant WLAN Access-Point an Ethernet Router with transparent bridged interfaces and Tor Network ## for Raspberry Pi™ with Raspian and other Linux based Systems ## ## elektronenblitz63 ubuntuusers.de 2013 ## published under GPL v3 ## ## Version 1.7.1.4bt / 17. ONovember 2013 ## have fun :-) ## freie Variablen ## Source-Interface / WAN-Schnittstelle ## durch die interfaces gesteuerte Schnittstelle für die Internetverbindung ## Bezeichnung ggf. anpassen ## Standard eth0 / Ethernet sourceiface=eth0 ## Bridge-Konfiguration bridgeiface=br0 forward_delay=2 stp=1 # optional brageing=10000 brage=40 # Bridge statisch (0) oder dynamisch (1) konfigurieren (0 statisch/Standard) # bedingt empfehlenswert, da so wechselnde IP-Adresse möglich # die IP-Adresseinstellungen in und Tor müssenn dementsprechend angepasst werden! bridge_dhcp=0 ## Adresskonfiguration statisch / IP-Bereich an das eigene Netzwerk anpassen # die IP-Adresseinstellungen in Squid, Privoxy und Tor müssenn dementsprechend angepasst werden. braddress=192.168.178.5 brbroadcast=192.168.178.255 brnetmask=255.255.255.0 ## IP-Adresse des Routers/Gateway wangateway=192.168.178.1 ## manuelle DNS-Konfiguration aktiviert (1) oder deaktiviert (0) (Standard) manDNS=0 # manuelle DNS-Konfiguration sys_domain="domain fritz.box" sys_search="search fritz.box" sys_dns0="nameserver 192.168.178.1" ## optional DNS 2 & 3 aktivieren ## Beispiel # sys_dns1="nameserver 8.8.4.4" # sys_dns2="nameserver 8.8.8.8" sys_dns1="" sys_dns2="" ## Konfiguration der WLAN-Schnittstelle die den Accesspoint erzeugt ## Bezeichnung ggf. anpassen wlaniface=wlan0 ## aut. Modulerkennung aktiviert (1) oder abgeschaltet (0) ## nur für RaspberryPi auto_ident=1 ## verwendetes WLAN-Modul bei auto_ident=0 eintragen wlan_modul="carl9170" ## Konfiguration der lokalen LAN-Schnittstelle ## Bezeichnung ggf. anpassen locallan=eth1 ## lokales LAN aktivieren (1), oder nicht (0) ## abschalten, sollte keine zweite Ethernetschnittstelle vorhanden sein locallan_on=1 # Sendeleistung einstellen # Optionen: auto|fixed|limit txpoweroption="limit" # tx power in dBm txpower=15 ## Regionseinstellung regcode="DE" regdelay=3 # Lease-Time leasetime=infinite ## Steuerung hostapd hostapdservice="hostapd -B" hostapdconf="/etc/hostapd_tor.conf" ## Iptables-Filter bei Programmende löschen # Standard=1 # bei pppoe-Verbindungen oder Bridge-Konfiguration auf 0 setzen delfilter=1 ## zeige Konfiguration nach Ablauf des Skripts (1/0) ## zur Diadnose bei Fehlfunktionen showconfig=1 ##Konfigurationsdatei Info zuletzt erkannter WLAN-Adapter/Treibermodul wlan_adapterfile="wlan_adapter.txt" ## NTP Timeserver aktiv (1) / nicht aktiv (0) ntp_timeset=0 ntp_command="ntpdate -u" ntp_server="ntp.ubuntu.com" ## Ende freie Variablen # Skript if [ "$1" = "-h" ]; then echo Verwendung: instant_AP-bridge.sh [-start] [-stop] [-h] echo Syntax: echo "sudo ./instant_AP-bridge_Tor.sh -start startet den AP" echo "sudo ./instant_AP-bridge_Tor.sh -stop beendet die Konfiguration und schließt den AP" echo "sudo ./instant_AP-bridge_Tor.sh beendet die Konfiguration und schließt den AP" echo "Ende" exit fi echo -e "Konfiguration ausführen\n" # Konfiguration löschen, Dienste stoppen service hostapd stop /usr/bin/killall hostapd service tor stop /usr/bin/killall dnsmasq /bin/rm -f /var/run/hostapd/$wlaniface /sbin/sysctl -w net.ipv4.ip_forward=0 ## Bridge löschen echo "lösche Bridge und Konfiguration" /sbin/brctl delif $bridgeiface $sourceiface /sbin/brctl delif $bridgeiface $locallan /sbin/ifconfig $bridgeiface down /sbin/brctl delbr $bridgeiface echo "entferne WAN-Konfiguration" /sbin/ifconfig $sourceiface 0.0.0.0 sleep 1 /sbin/ifconfig $sourceiface down if [ "$locallan_on" = "1" ]; then echo "entferne LAN-Konfiguration" /sbin/ifconfig $locallan 0.0.0.0 sleep 1 /sbin/ifconfig $locallan down fi echo "entferne WLAN-Konfiguration" /sbin/iwconfig $wlaniface mode managed sleep 1 /sbin/ifconfig $wlaniface 0.0.0.0 sleep 1 /sbin/ifconfig $wlaniface down sleep 2 if [ "$delfilter" = "1" ]; then echo "lösche iptables-Filter" /sbin/iptables -F /sbin/iptables -X /sbin/iptables -t nat -F /sbin/modprobe -rfv iptable_nat ipt_MASQUERADE xt_conntrack iptable_filter fi echo "Router & WLAN Access-Point Konfiguration beendet." if [ "$1" != "-start" ]; then echo "stoppe alle Dienste, und Verbindungen" exit fi ## start Konfiguration echo -e "Starte alle Dienste, und Verbindungen\n" ## Modulerkennung WLAN if [ "$auto_ident" = "1" ]; then wlan_modul=$(find /sys/class/net/$wlaniface/device/driver/module/drivers/ | grep usb | cut -c 55-70) lastknownmodule=$(cat $wlan_adapterfile) echo "WLAN-Treibermodul $wlan_modul erkannt, vorheriges Modul: $lastknownmodule" else echo "Autoerkennung des WLAN-Treibermodul deaktiviert." echo -e "verwendet $wlan_modul\n" echo $wlan_modul > $wlan_adapterfile fi lastknownmodule=$(cat $wlan_adapterfile) if [ "$lastknownmodule" = "" ]; then lastknownmodule="none" echo "WLAN-Treibermodul $wlan_modul erkannt, vorheriges Modul: $lastknownmodule" fi ## reintialisiere WLAN-Adapter echo -e "WLAN-Adapter reinitialisieren ...\n" if [ "$wlan_modul" = "$lastknownmodule" ]; then /sbin/modprobe -rf $wlan_modul sleep 1 /sbin/modprobe $wlan_modul sleep 1 else /sbin/modprobe -rf $lastknownmodule sleep 1 /sbin/modprobe -rf $wlan_modul sleep 1 /sbin/modprobe $wlan_modul sleep 1 echo $wlan_modul > $wlan_adapterfile sleep 1 fi ## initialize WAN-Port /sbin/ifconfig $sourceiface up sleep 1 ## deaktivate WLAN-Powermanagement / set Tx-Power echo -e "deaktiviere Stromsparmechanismen für $wlaniface" /sbin/iw dev $wlaniface set power_save off sleep 1 echo -e "setze Sendeleistung des WLAN-Adapters $wlaniface" # /sbin/iw dev $wlaniface set txpower $txpoweroption $txpower /sbin/iwconfig $wlaniface txpower $txpower sleep 1 ## Regionseinstellung echo -e "setze Regionseinstellung des WLAN-Adapters $wlaniface" /sbin/iw reg set $regcode sleep $regdelay ## start hostapd echo -e "Starte hostapd-Service:\n" $hostapdservice $hostapdconf sleep 1 echo ## Bridge konfigurieren /sbin/brctl addif $bridgeiface $sourceiface if [ "$locallan_on" = "1" ]; then /sbin/brctl addif $bridgeiface $locallan echo -e "Ethernerschnittstelle 2 aktiviert.\n" fi /sbin/brctl setfd $bridgeiface $forward_delay /sbin/brctl stp $bridgeiface $stp ## Optional aktivierbar # /sbin/brctl setageing $bridgeiface $brageing # /sbin/brctl setmaxage $bridgeiface $brage ## initialize Bridge-Port if [ "$bridge_dhcp" = "0" ]; then echo "Bridge-Schnittstelle $bridgeiface initialisieren (statisch):" echo -e "Interfac: $bridgeiface IP-Adresse: $braddress Broadcast: $brbroadcast Netzmaske: $brnetmask" /sbin/ifconfig $bridgeiface $braddress broadcast $brbroadcast netmask $brnetmask /sbin/route add default gw $wangateway metric 0 dev $bridgeiface sleep 1 else echo -e "Bridge $bridgeiface automatisch initialisieren (DHCP). Einen Moment bitte ...\n" /sbin/dhclient $bridgeiface sleep 1 fi /sbin/ifconfig $sourceiface up ## Forwarding to Tor /sbin/iptables -t nat -A PREROUTING -i $bridgeiface -p tcp --dport 22 -j REDIRECT --to-ports 22 /sbin/iptables -t nat -A PREROUTING -i $bridgeiface -p udp --dport 53 -j REDIRECT --to-ports 53 /sbin/iptables -t nat -A PREROUTING -i $bridgeiface -p tcp --syn -j REDIRECT --to-ports 9040 ## starting Tor echo -e "Starte Tor ...\n" service tor start ## DNS setzen ## verwende erkanntes Gateway echo "DNS-Konfiguration ..." if [ "$manDNS" = "0" ]; then echo -e "nameserver" $(route -n | grep UG | awk {'print $2'}) | tee /etc/resolv.conf echo else echo -e "$sys_domain\n$sys_search\n$sys_dns0\n$sys_dns1\n$sys_dns2" | tee /etc/resolv.conf sleep 1 echo fi ## NTP Zeit-Syncronisation if [ "$ntp_timeset" = "1" ]; then echo "Zeitsyncronisation über $ntp_server:" $ntp_command $ntp_server fi ## Ausgabe der aktuellen Konfiguration if [ "$showconfig" = "1" ]; then echo -e "System DNS-Check und Routing:" cat /etc/resolv.conf echo /sbin/route -n echo echo -e "Konfiguration Bridge:\n" /sbin/ifconfig $bridgeiface | egrep 'Link|inet Adresse' echo /sbin/brctl show echo /sbin/brctl showmacs $bridgeiface echo /sbin/brctl showstp $bridgeiface echo echo -e "Konfiguration lokales WAN:\n" /sbin/ifconfig $sourceiface | egrep 'Link|inet Adresse' echo echo -e "Konfiguration lokales LAN:\n" /sbin/ifconfig $locallan | egrep 'Link|inet Adresse' echo echo "Konfiguration WLAN:" /sbin/ifconfig $wlaniface | egrep 'Link|inet Adresse' echo /sbin/iwconfig $wlaniface | egrep 'IEEE|Power|Mode' echo /sbin/iwconfig mon.$wlaniface ## Ausgabe der aktuellen Konfiguration echo -e "Regionseinstellung des WLAN-Adapters:\n" /sbin/iw reg get echo echo "Iptables:" iptables -t nat -L echo echo "Dienstestatus:" service hostapd status service tor status else exit 0 fi }}} * Dienstekonfigurationen via '''/etc/tor/torrc'''. Dies ist nur die erforderliche Basiskonfiguration. Insbesondere die Einstellung für die sog. Entry- und Exit-Nodes sollte verfeinert werden. Genauere Informationen dazu in [:Tor/Konfiguration:Tor - Konfiguration]. Die IP-Einstellung für `TransListenAddress` und `DNSListenAddress` ist an die tatsächliche IP-Konfiguration der Bridge anzugleichen: {{{ Log notice file /var/log/tor/notices.log AutomapHostsSuffixes .onion,.exit AutomapHostsOnResolve 1 TransPort 9040 TransListenAddress 192.168.178.5 DNSPort 53 DNSListenAddress 192.168.178.5 EntryNodes {de} ExitNodes {de} }}} * '''/etc/hostapd_tor.conf''': {{{ # Schnittstelle und Treiber interface=wlan0 driver=nl80211 bridge=br0 # WLAN-Konfiguration ssid=WLAN_AP_TOR channel=4 # ESSID sichtbar ignore_broadcast_ssid=0 # Ländereinstellungen country_code=DE ieee80211d=1 # Übertragungsmodus hw_mode=g # Optionale Einstellungen # supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 # Draft-N Modus aktivieren / optional nur für entsprechende Karten # ieee80211n=1 # Übertragungsmodus / Bandbreite 40MHz # ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40] # Beacons beacon_int=100 dtim_period=2 # MAC-Authentifizierung macaddr_acl=0 # max. Anzahl der Clients max_num_sta=20 # Größe der Datenpakete/Begrenzung rts_threshold=2347 fragm_threshold=2346 # hostapd Log Einstellungen logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 # temporäre Konfigurationsdateien dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # Authentifizierungsoptionen auth_algs=3 # wmm-Funktionalität wmm_enabled=0 # Verschlüsselung / hier rein WPA2 wpa=2 rsn_preauth=1 rsn_preauth_interfaces=wlan0 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP # Schlüsselintervalle / Standardkonfiguration wpa_group_rekey=600 wpa_ptk_rekey=600 wpa_gmk_rekey=86400 # Zugangsschlüssel (PSK) / hier in Klartext (ASCII) wpa_passphrase=1234567890abcdefghijklmn }}} = Links = * [:Skripte:] {Übersicht} Übersichtsartikel * [:WLAN:] {Übersicht} Übersichtsartikel #tag: Netzwerk, Internet, WLAN, Shell