Inhaltsverzeichnis
Netzwerk-Bridge mit TUN/TAP für eine Computer-Emulation
Nötige Pakete zum erstellen des TUN/TAP Device installieren.:
apt-get install libpcap-dev bridge-utils uml-utilities net-tools
Das Paket net-tools ist dafür nötig, um das ältere Programm ifconfig weiterhin benutzen zu können.
Es sei auch erwähnt, dass als Name des Nutzers simh genannt wird, da zur Ausführung des Emulators eigens ein User selben Namens erstellt wurde.
Die physische Netzwerkschnittstelle heißt hier enp0s25 anstatt wie meisten üblich eth0. Als Rechner wurde hier ein Lenovo ThinkPad T420 gewählt.
Host IP-Adresse via DHCP
Durch den DHCP-Server hat der Host beispielsweise die private IP-Adresse 192.168.1.224 bekommen. Im folgendem Skript /root/Skripte/create-TUN-TAP-Devices.sh wird anhand dieser Adresse eine Bridge erstellt.
mkdir /root/Skripte
vi /root/Skripte/create-TUN-TAP-Devices.sh
#!/bin/sh HOSTIP=192.168.1.224 HOSTNETMASK=255.255.255.0 HOSTBCASTADDR=192.168.1.255 HOSTDEFAULTGATEWAY=192.168.1.1 # /usr/bin/tunctl -t tap0 -u simh /usr/sbin/ifconfig tap0 up # # Now convert enp0s25 to a bridge and bridge it with the TAP interface /usr/sbin/brctl addbr br0 /usr/sbin/brctl addif br0 enp0s25 /usr/sbin/brctl setfd br0 0 /usr/sbin/ifconfig enp0s25 0.0.0.0 /usr/sbin/ifconfig br0 $HOSTIP netmask $HOSTNETMASK broadcast $HOSTBCASTADDR up # set the default route to the br0 interface /usr/sbin/route add -net 0.0.0.0/0 gw $HOSTDEFAULTGATEWAY # bridge in the tap device /usr/sbin/brctl addif br0 tap0 /usr/sbin/ifconfig tap0 0.0.0.0
chmod +x /root/Skripte/create-TUN-TAP-Devices.sh
./Skripte/create-TUN-TAP-Devices.sh
Manuelle Konfiguration der Netzwerkschnittstellen
Bevor die manuelle Konfiguration eine Wirkung erzielt, sollte der Netzwerkmanager vom systemd deaktiviert werden.
systemctl disable networking.service
Weitere, gebräuchliche Optionen sind enable, start, stop und status.
In meinem privaten Netzwerk-Setup steht für die drahtgebunden Geräte das private Klasse-C-Netzwerk 192.168.1.x/24 zur Verfügung. Der DHCP-Range geht von 192.168.1.100 bis 192.168.1.254. Die Adressen von 192.168.1.1 bis 192.168.1.99 stehen für die feste Vergabe von statischen IP-Adresse zur Verfügung, wobei 192.168.1.1 bereits vom Gateway benutzt wird.
Das Lenovo ThinkPad T420, auf dem der Emulator simh unter einem gleichnamigen Benutzer ausgeführt wird, soll die Adresse 192.168.1.9 bekommen und ist mittels Ethernet-Kabel am LAN-Port des Routers direkt verbunden. Die erste und derzeit einzige emulierten Maschine soll die IP-Adresse 192.168.1.11 an der Schnittstelle tap0 bekommen. Für weitere Maschinen sollen die Adressen bis 192.168.1.19 verwendet werden.
In den Übungsbeispielen anderer wird der Bridge br0 die Adresse 192.168.1.10 zugewiesen. Warum diese das machen, erschließt sich mir allerdings nicht, denn ich habe gelernt, dass eine Bridge auf der OSI-Schicht 2 angesiedelt ist, wo keine IP-Adressen eingesetzt werden. - Und es ging in deren Beispielen auch nur um die Konfiguration einer Bridge mittels TAP-Device. Deshalb habe ich vermerkt, dass diese Konfigurationsparameter optional sind. Eine Wirkung konnte ich aber bei Aktivierung noch nicht feststellen.
Bearbeiten eines Entwurfes der /etc/network/interfaces:
... auto enp0s25 allow-hotplug enp0s25 iface enp0s25 inet static address 192.168.1.9 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 # Virtual interface auto tap0 iface tap0 inet manual pre-up tunctl -t tap0 -u simh up ifconfig tap0 192.168.1.11 up # optional down ifconfig tap0 down # Bridge interface auto br0 iface br0 inet static address 192.168.1.10 # optional netmask 255.255.255.0 # optional network 192.168.1.0 # optional broadcast 192.168.1.255 # optional gateway 192.168.1.1 # optional bridge_ports enp0s25 tap0 bridge_stp off bridge_maxwait 5
Skript zum Aufbauen der Bridge ausführen.
./Skripte/create-TUN-TAP-Devices.sh