also ich habe das problem wie folgt gelöst
es geht um die anbindung von mehreren vpn-clienten an einen vpn-server, wobei der server die namensauflösung und ip-vergabe mit festen ips vornehmen soll
also
1. der server baut ein vpn-endknoten mit fester ip an einem tap-device aus, die authorisierung habe ich übner zertifikate geregelt. vom server erhält der klientrechner die informationen zu defaultgateway, nameserver und domainname über push-optionen in der configdatei des servers
|
Quellcode
|
1
2
3
|
push "dhcp-option DEFAULT_GATEWAY=10.0.0.1"
push "dhcp-option DNS1=192.168.0.1"
push "dhcp-option DOMAIN=vpnprivat.int"
|
ausserdem wird für jeden klienten ein einem unterverzeichnis (serveroption --ccd) eine datei mit dem X509-namen (wurde beim erstellen des zertifikats angegeben) des klienten angelegt. in dieser datei wird dem clienten über weitere optionen seine feste ip sowie der hostname mitgeteilt, zb:
datei client0 (name eines klientschluessels)
|
Quellcode
|
1
2
3
|
ifconfig-push 10.0.0.208 255.255.255.0
iroute 10.0.0.0 255.255.255.0
push "dhcp-option HOST=client0"
|
auf der klientseite erhält der klient mit dem entsprechenden schlüssel die festgelegte ip und die push informationen in der reihenfolge wie sie in den konfdaeien auftauchen, zuerst die aus der configdatei des servers und danach die aus dem klienten. auf klientseite können diese als umgebungsvariable zb in einem up-script (option --up /pfad_da_hin/scriptname) gelesen werden. die namen der variablen sind foreign_option_1, für die erste push-anweisung , foreign_option_2 für die zweite usw usf, damit kann dann im up-script zb die dafaultroute, der hostname, die domain etc gesetzt werden.
noch ein paar eigenheiten.
1.die push-optionen aus den client-dateien auf dem server werden nur dann gesendet, wenn sich auch in der server-konfigurationsdatei bereits eine push-anweisung befindet.
2.die klientdateien auf dem server können zur laufzeit des servers geändert werden, ein neustart des openvpn-servers ist unnötig. bei der nächsten klientanfrege wird der inhalt durch den server neu gelesen.