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
Kommentare
Vielen Dank, hat mir sehr weiter geholfen =)