Da ich mich derzeit mit dem konfigurieren eines Debian Servers für meinen derzeitigen Job beschäftige, hier mal eine kleine Anleitung im zusammenhang mit OpenVPN. Es geht hier speziell um gebridgetes VPN. Mit dem folgenden Script wird bei jedem Start automatisch ein virtuelles TAP Device für OpenVPN erstellt und zur Ethernet Bridge hinzugefügt.

Folgende Pakete müssen installiert sein:
- openvpn
- bridge-utils
In /etc/network/interfaces wird die Bridge br0 eingetragen und konfiguriert:
# The primary network interface auto br0 iface br0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.254 dns-nameservers 192.168.0.1 bridge_ports all
Unter bridge_ports sind alle Interfaces einzutragen die bei Systemstart zur Bridge hinzugefügt werden sollen. Da es in meinem Fall nur ein physikalisches Interface gibt habe ich all eingetragen. Alternativ wären die einzelnen Interfaces eth0, eth1, etc. anzugeben.
ACHTUNG: Die Interfaces die zur Bridge hinzugefügt werden sollen dürfen nicht in der Datei eingetragen und somit konfiguriert sein.

Nun zum eigentlichen Startscript für das tap Interface. Das Script stammt ursprünglich von hier und war für OpenWRT vorgesehen.
In /etc/init.d/ sollte nun folgendes Script erstellt werden:
#!/bin/sh
# Creates TAP devices for use by OpenVPN and adds them to Bridge
# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
case "$1" in
start)
# Make sure module is loaded
insmod tun
# Build tap devices
for t in $tap; do
openvpn --mktun --dev $t
done
# Add TAP interfaces to bridge
for t in $tap; do
brctl addif $br $t
done
#Configure bridged interfaces
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
;;
stop)
for t in $tap; do
ifconfig $t 0.0.0.0 down
done
for t in $tap; do
brctl delif $br $t
done
for t in $tap; do
openvpn --rmtun --dev $t
done
rmmod tun
;;
*)
echo "$0 {start|stop}"
;;
esac
Ich nenne die Datei Beispielsweise tap-interfaces.
Diese Datei muss nun mit
chmod +x tap-interfaces
ausführbar gemacht werden und abschließend mit
update-rc.d /etc/init.d/tap-interfaces defaults
zu den Scripten die SysVinit bei Systemstart lädt hinzugefügt werden.
19:53, 13. Februar 2010Onkel_T /
Danke für’s tap-script.
Hier das von mir:
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: networking
# Required-Start: mountkernfs ifupdown $local_fs
# Required-Stop: ifupdown $local_fs
# Default-Start: S
# Default-Stop: 0 6
# Short-Description: Raise network interfaces.
### END INIT INFO
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################
# http://openvpn.net/index.php/open-source/documentation/miscellaneous/76-ethernet-bridging.html#linuxscript
# http://www.blablubb.at/
# Creates TAP devices for use by OpenVPN and adds them to Bridge
PATH=”/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin”
# Define Bridge Interface
br=”br0″
# Define list of TAP interfaces to be bridged,
# for example tap=”tap0 tap1 tap2″.
tap=”tap0 tap1 tap2 tap3 tap4 tap5 tap6 tap7 tap8 tap9″
case “$1″ in
start)
# Define Bridge Interface
br=”br0″
# Define list of TAP interfaces to be bridged,
# for example tap=”tap0 tap1 tap2″.
tap=”tap0 tap1 tap2 tap3 tap4 tap5 tap6 tap7 tap8 tap9″
# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth=”eth2″
eth_ip=”10.8.0.2″
eth_netmask=”255.255.255.0″
eth_broadcast=”10.8.0.255″
for t in $tap; do
openvpn –mktun –dev $t
done
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
;;
stop)
####################################
# Tear Down Ethernet bridge on Linux
####################################
# Define Bridge Interface
br=”br0″
# Define list of TAP interfaces to be bridged together
tap=”tap0 tap1 tap2 tap3 tap4 tap5 tap6 tap7 tap8 tap9″
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn –rmtun –dev $t
done
;;
*)
echo “$0 {start|stop}”
;;
esac