Raspberry Pi als WLAN-Bridge für Drucker ohne WLAN

Der Raspberry soll sich per Wlan mit dem Router verbinden und die Verbindung auf den LAN-Port durchreichen.

Verwendete Umgebung: Raspberry Pi 2, WLAN-Stick mit Ralink RT5370 Chip, Rasbian mit Debian Jessie

Anwendung

Drucker ohne WLAN, Fernseher o.a. Geräte ohne Netzwerkdose in der Nähe.

Nach mehreren Anläufen ohne Erfolg bis hin zum Aussperren aus dem Raspberry und mühsamem Editieren der Netzwerkeinstellungen direkt auf der SD-Karte, da ich keine USB-Tastatur habe, ist es nun endlich gelungen. Mein alter Netzwerkdrucker HP5N kann in einer Ecke ohne Netzwerkkabel stehen und druckt “kabellos”.

Die entscheidenden Einstellungen habe ich hier gefunden.

Zunächst ist zusätzliche Software zu installieren.

aptitude install parprouted dhcp-helper avahi-daemon

Eine funktionierende WLAN-Verbindung wird vorausgesetzt. Sonst kann hier nachgelesen werden.

In der Datei /etc/network/interfaces sind folgende Einstellungen zu machen:

#/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  post-up /usr/sbin/parprouted eth0 wlan0
  post-down /usr/bin/killall /usr/sbin/parprouted
  # clone the dhcp-allocated IP to eth0 so dhcp-helper will relay for the correct subnet
  post-up /sbin/ip addr add $(/sbin/ip addr show wlan0 | perl -wne 'm|^\s+inet (.*)/| && print $1')/32 dev eth0
  post-down /sbin/ifdown eth0

/etc/sysctl.conf um IP-Forwarding zu aktivieren

net.ipv4.ip_forward=1

/etc/avahi/avahi-daemon.conf um mDNS relaying zu aktivieren

[reflector]
enable-reflector=yes

meine /etc/wpa_suppliant.conf

# /etc/wpa_supplicant/wpa_supplicant.conf

country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="MEINE_SSID"
psk="WLAN_PASSWORT"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}

Überwachen der LAN-Verbindung

Der Aufruf von parprouted in /etc/network/interfaces funktioniert nur nach einem Neustart des Raspi. Wird aber das über den LAN-Port angeschlossene Gerät vom Strom getrennt, funktioniert die LAN-Verbindung nicht mehr.

Dazu gibt es folgendes Skript:

#!/bin/sh

# /usr/sbin/check_lan_status
# pruefe die LAN-Verbindung

cable=$(cat /sys/class/net/eth0/carrier)

if [ "$cable" = "0" ]; then  #kein Kabel dran, Skript beenden
        exit 0
fi

if /bin/ping -c 1 192.168.34.100 >/dev/null #Verbindung funktioniert, Skript beenden
        then
            echo "Drucker ok"
            exit 0
        fi

# Falls ping nicht funktioniert hat, muss der LAN-Port "neu gestartet werden"
/usr/sbin/parprouted eth0 wlan0

Das Skript wird mittels Cronjob eingebunden und bei mir jede Minute geprüft, ob ein Gerät angeschlossen wurde. Das Skript z.B. unter /usr/sbin/check_lan_status ablegen und mit

#chmod 755 /usr/sbin/check_lan_status

ausführbar machen.

Anschließend den Cronjob aktivieren:

#crontab -e
# Check die Verbindung zum Drucker
* * * * * /usr/sbin/check_lan_status

Mit der obigen Einstellung wird das Skript jede Minute gestartet und bei aktiver Kabelverbindung und nicht funktionierendem Ping parprouted neu gestartet.

 

In einem weiteren Beitrag beschreibe ich die Einrichtung des Raspberrry als Printserver, um meinen alten Drucker iOS-druckfähig (AirPrint) zu machen.

Links

rbnrpi

4 Comments

  1. Adrian said:

    Sorry for posting in english, maybe you understand this:

    It is not enough for me to run /usr/sbin/parprouted eth0 wlan0 in monitoring script.

    I need to run “/sbin/ip addr add $(/sbin/ip addr show wlan0 | perl -wne ‘m|^\s+inet (.*)/| && print $1’)/32 dev eth0” too.

    But I am still looking for a better way than the monitoring script:

    https://www.raspberrypi.org/forums/viewtopic.php?f=36&t=176508

    6. März 2017
    Reply
  2. Adrian said:

    The scenario: it doesn’t worked me even after restart. I must manually run the two post-up command, after that I get ip address.

    I found the problem why /etc/network/interfaced post-up commands not worked: there was a conflict with build in DHCP server.

    after you run: sudo apt-get purge dhcpcd5

    everything is fine, post-up commands are working properly after restart and I can unplug-plug LAN it works too;)

    6. März 2017
    Reply
  3. Stefan said:

    Guten Morgen
    Die Anleitung klappt bei der neusten Raspbian Stretch Lite nicht. Die Netzwerkinterfaces werden nicht mehr über die /etc/network/interfaces gesteuert. Gibt es evtl. eine neue Anleitung? Ich wäre sehr dankbar.
    Stefan

    7. Februar 2018
    Reply
  4. Stefan said:

    You need to edit following:
    /etc/default/dhcp-helper
    # relay dhcp requests as broadcast to wlan0
    DHCPHELPER_OPTS=”-b wlan0″

    10. Februar 2018
    Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.