Als Firewall mit pfSense und Debian als WLAN-AP

Mir ging mein alter ESXi-Server (mit Intel Q6600) schon auf den Keks – laut, wenig RAM und kein VT-d/VT-x für Spielereien und relativ hoher Stromverbrauch. Lange habe ich gesucht und mich schließlich für einen stromsparenden Shuttle DS57U3 Nettop entschieden. Dieser ist nicht allzu teuer und dementsprechende Hinweise, dass darauf ESXi läuft habe ich zuvor auch gefunden.

Hardware

  • 1x Shuttle DS57U3
  • 1x Samsung SSD 850 EVO 500GB, mSATA
  • 2x Kingston ValueRAM KVR16LS11/8

Voraussetzungen für diese Anleitung

Grundwissen mit ESXi, Debian und pfSense. Die Anleitung ist eher so als Erinnerung gedacht, falls ich die Kiste wieder mal neu aufsetzen muss. Vielleicht ist es ja für jemand anderen auch interessant 🙂 – ich übernehme selbstverständlich keine Verantwortung für etwaige Schäden, etc. die durch meine Vorschläge enstehen könnten.

Installation von ESXi 6.0

Dafür muss man sich leider ein Custom-ISO erstellen – zum Beispiel mit dem ESXi-Customizer-PS-v2.4.ps1[1] Script unter Windows 10. Zuvor die aktuelle VMware PowerCLI herunterladen[2] und installieren, dann das Customizer-Script einfach besorgen. Unter Windows 10 nun ein PowerShell-Fenster öffnen und in den entsprechenden Ordner wechseln wo man das Script gespeichert hat. Damit man dieses Script auch ausführen kann, muss die Execution Policy für die Ausführungszeit angepasst werden.

Set-ExecutionPolicy Unrestricted -Scope CurrentUser

Benötigte Treiber

Im Vibsdepot[3] findet man eine Liste aller verfügbaren ESXi packages:

  • Die beiden Netzwerkkarten sollten zwar kompatibel zu ESXi 6.0 sein, aber durch einen kleinen Fehler wird die zweite NIC nicht richtig erkannt. Dafür wird ein angepasster net-igb-Treiber benötigt[4]
  • Da von VMware auch viele AHCI-Treiber rausgeschmissen wurden, braucht man ein zusätzliches sata-xahci Paket[5]

ISO erstellen

Update 2019-12-02: Funktioniert auch mit dem aktuellsten Script und ESXi 6.7 🙂

Nachdem die ExecutionPolicy angepasst ist, kann man das Script ausführen:

.\ESXi-Customizer-PS-v2.4.ps1 -v60 -vft -load sata-xahci,net-igb

Die aktuellste ISO mit allen Patches und den angegebenen Treibern wird heruntergeladen und erstellt. Diese ISO anschließend am einfachsten auf CD brennen, davon am DS57U3 booten und schließlich ESXi installieren. Danach nicht vergessen die Execution Policy wieder zurückzusetzen:

Set-ExecutionPolicy Undefined -Scope CurrentUser

Vorbereitung von ESXi

Die Initialkonfig, nehme ich an, brauche ich nicht erklären, die ist recht einfach und dazu gibt es schon genügend Anleitungen :o)

WebGUI installieren

Für ein einfacheres Management hab ich mir das ESXi Embedded Host Client-Fling[6] installiert. Dieser Webclient funktioniert schon recht gut, und er wird auch unter ESXi 6.0u2 vermutlich standardmäßig mitgeliefert werden. Leider sind noch ein paar Sachen und Dinge zu beachten:

  • Die WebGUI funktioniert anscheinend nur mit einem lizenzierten (oder Trial-Lizenz) ESXi ohne Probleme
  • Mit der Hardware-Passthrough Konfiguration gibt es noch ein Probleme – später mehr dazu

Hardware Passthrough für die WLAN-Karte aktivieren (besser über normalen VMware Client – weshalb? Siehe weiter unten)

Im WebGUI im Navigator auf Manage klicken, im Hauptfenster den Hardware-Tab wählen und vermutlich ganz unten bei Realtek Semiconductor Co., Ltd. RTL8188EE… das Häkchen setzen. Anschließend Toggle passthrough bestätigen und den Host rebooten.

ESXi Virtual Switch anlegen/konfigurieren

Neuen Switch und Port Gruppe anlegen

Im Navigator in der WebGUI auf Networking klicken und Virtual Switches wählen. Hier noch mindestens einen Switch mit Uplink zur zweiten Netzwerkkarte hinzufügen. Danach auf Port groups wechseln und eine Gruppe zum Bsp. mit Namen WAN erstellen. Als vSwitch den neu erstellten wählen.

Promiscuous Mode am Ersten Switch aktivieren

Im Navigator auf Networking und anschließend Virtual switches klicken. Den vSwitch0 wählen, dieser ist für unser LAN und für das Management Interface verantwortlich. Diesen Switch editieren und unter Security den Punkt Accept aktivieren. Dies ist später für den Debian WLAN-AP notwendig – sonst geht von der pfSense kein DHCP-OFFER durch.

Anlegen der VMs

diese müssen nicht allzugroß bemessen sein, jeweils eine CPU und maximal 1GB RAM wählen. Als Festplattengröße kann der vorgeschlagene Wert verwendet werden. Achtung, in der WebGUI werden diese im Thin-Format angelegt. Wenn man das nicht will, auf das entsprechende Symbol klicken damit die erweiterten Optionen zu der Festplatte aufklappen und Thick lazy zeroed auswählen. Bei der Debian VM nun noch als zusätzliches Device die WLAN-Karte auswählen – hier passiert leider ein Fehler über die WebGUI – dies eher über den normalen VMware Client erledigen. Es wird nämlich in der vmx-File eine falsche VendorID eingetragen. Über die WebGUI wurde mir statt pciPassthru0.deviceId = x8179 nämlich pciPassthru0.deviceId = xffff eingetragen. Achtung, bei VMs mit Hardware Passthrough muss der vollständige RAM der Maschine reserviert werden und diverse Features (vMotion, Snapshots, …) funktionieren nicht mehr im Betrieb!

pfSense installieren

Einfach die amd64-ISO[7] runterladen und normal installieren. Enstprechend die Konfig vornehmen und fertig. Ich hab im LAN die IP-Range 192.168.100.0/24 verwendet, das LAN-Interface hat die 192.168.100.10 und der DHCP-Server ist auch aktiv.

Debian installieren

Hier reicht für die Installation die netinst-ISO und man braucht für die Installation nur den SSH-Server und die Standardpakete. Bei der Installation wird die WLAN-Karte schon erkannt – hier einfach Continue wählen.

Debian konfigurieren

Damit die WLAN-Karte richtig funktioniert, muss ein non-free Package[8] installiert werden (siehe Link [8]). Trotzdem gibt es aber mit dem Standard-Kernel (war zu dieser Zeit 3.16….) von Debian noch Probleme (extrem niedrige Bandbreite). Ich hab diese behoben, indem ich mir von den Backport-Packages[9] für Jessie den 4.2er Kernel installiert habe. In /etc/apt/sources.list folgende Zeilen hinzufügen.

# Backports repository
deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

danach wie immer ein apt-get update und anschließend folgende Pakete installieren:

apt-get install linux-image-4.2.0-0.bpo.1-amd64 vim sudo firmware-realtek hostapd bridge-utils wavemon wireless-tools rfkill tcpdump
hostapd Konfiguration

In der Regel bin ich nach einer gefundenen Anleitung (siehe Link [10]) vorgegangen

  • in der File /etc/default/hostapd folgendes gesetzt

    DAEMON_CONF=/etc/hostapd/hostapd.conf
  • eine /etc/hostapd/hostapd.conf Datei mit folgender Konfig erstellt:

    # wireless interface name
    interface=wlan0
    
    # bridge name
    bridge=br0
    
    # driver
    driver=nl80211
    
    # country
    country_code=AT
    
    # ssid
    ssid=WindmillsDoNotWorkThatWay
    
    # wlan mode
    hw_mode=g
    
    # channel
    channel=1
    
    # security
    wpa=2
    
    # wpa passphrase
    wpa_passphrase=SuperWahnsinnigGeheimesPasswort!
    
    # key management algorithm
    wpa_key_mgmt=WPA-PSK
    
    # cipher suites
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
    
    # shared key authentication
    auth_algs=1
    
    # accept all macs
    macaddr_acl=0
  • dann die /etc/network/interfaces Datei editiert

    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    
    source /etc/network/interfaces.d/*
    
    # The loopback network interface
    auto lo br0
    iface lo inet loopback
    
    # wireless wlan
    auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet manual
    
    # The primary network interface
    allow-hotplug eth0
    iface eth0 inet manual
    
    # setup bridge
    iface br0 inet static
    bridge_ports wlan0 eth0
    address 192.168.100.252
    netmask 255.255.255.0
    network 192.168.100.0
    gateway 192.168.100.10
    dns-nameservers 192.168.100.10

Jetzt kann rebootet werden. Und das sollt alles gewesen sein. So hat man einen schönen ESXi den man als Firewall, AccessPoint und Spielwiese für andere Sachen und Dinge verwenden kann.

Troubleshooting Tips

Für das Debuggen hilft es sehr hostapd einfach auf der Console zu öffnen: hostapd /etc/hostapd/hostapd.conf Ansonsten findet man alle Logeinträge in /var/log/syslog Wenn man von der pfSense keine DHCP-Adresse bekommt auch hier mal in die Logs schauen und eventuell checken ob auch wirklich der Promiscuous Mode bei der richtigen NIC am ESXi gesetzt ist. Unter Debian mit tcpdump -n port 67 or port 68 überprüfen ob auch DHCP-Anfragen raus und reingehen. Ob sich was im WLAN tut kann man auch schön mit wavemon sehn.

Mehr Power?

Dann vielleicht mit Shuttle\’s DH170 und Intel Core i7 :o) – http://www.shuttle.eu/de/produkte/slim/dh170/

Links

[1] http://www.v-front.de/p/esxi-customizer-ps.html
[2] http://www.vmware.com/go/powercli
[3] https://vibsdepot.v-front.de/wiki/index.php/List_of_currently_available_ESXi_packages
[4]http://www.v-front.de/2015/08/a-fix-for-intel-i211-and-i350-adapters.html
[5] http://www.v-front.de/2013/11/how-to-make-your-unsupported-sata-ahci.html
[6] https://labs.vmware.com/flings/esxi-embedded-host-client
[7] https://www.pfsense.org/download/mirror.php?section=downloads
[8] https://wiki.debian.org/rtl819x#rtl8188ee
[9] https://wiki.debian.org/Backports
[10] http://www.cyberciti.biz/faq/debian-ubuntu-linux-setting-wireless-access-point/

Weitere interessante Links

[a] https://nims11.wordpress.com/2012/04/27/hostapd-the-linux-way-to-create-virtual-wifi-access-point/
[b] http://www.linuxquestions.org/questions/debian-26/where-is-iwconfig-command-365880/
[c] http://www.cyberciti.biz/tips/linux-find-out-wireless-network-speed-signal-strength.html
[d] https://github.com/lwfinger/rtlwifi_new/issues/4

Zuletzt bearbeitet: Dezember 19, 2020

Autor

Kommentare

Vielen Dank, hat mir sehr weiter geholfen =)

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.