[OpenVPN/dnsmasq] Eigene DHCP Range für VPN-Clients einstellen?

zirkon

Aktives Mitglied
Mitglied seit
12 Aug 2008
Beiträge
906
Punkte für Reaktionen
0
Punkte
0
Die 7270 läuft mit OpenVPN im TAP-Modus. In Verbindung mit dnsmasq musste im Webif das Eingabefeld unter VPN IP-Adressen und Routing im VPN > DHCP-Range für Clients frei gelassen werden, da es anders einfach nicht funktionieren wollte (wird dabei vielleicht der "AVM DHCP" verwendet?). tap0 muss natürlich überbrückt sein, damit echtes Bridging realisiert werden kann.

Nun wollte ich den OpenVPN-Clients trotzdem via dnsmasq eine eigene IP-Range zuweisen. Dazu den Eintrag bei DHCP Range wie folgt erweitert:
Code:
10.60.20.100,10.60.20.120,12h
[COLOR="Red"]net:ovpn,10.60.20.200,10.60.20.220,6h[/COLOR]
Leider erhalten VPN-Clients immer noch Leases aus dem ersten IP-Adressbereich (100-120). Funktioniert die Zuordnung über net:eek:vpn nicht oder woran kann es sonst liegen?
 
Ich kenne zwar die dnsmasq-Schreibweise nicht, versuche nur so logisch nachzudenken:
Die erste Zeile verstehe ich, als Globale Einstellung (also für alle). Deswegen wird sie auch angewendet. Mögliche Vorgehensweise:
a. Nimm die erste Zeile weg und schau was passiert
b. Tausche erste und zweite Zeile um, vielleicht klappt es damit
c. finde für die erste Zeile auch so ein Argument wie
Code:
net:ovpn
, nur für internes Netz

MfG
 
Aus der "man dnsmasq" verstehe ich das so, dass was hier "ovpn" ist sollte die "Network-ID" sein, mit der die "range" der IP-Adressen die der DHCP-Server festlegt, noch genauer definiert wird:
Code:
[[net:][B][COLOR="Red"]network-id[/COLOR][/B],]<start-addr>,<end-addr>[[,<netmask>],<broadcast>][,<default lease time>]
 
ja toll, aber wocher soll denn dnsmasq wissen, dass eine bestimmte MAC-Adresse zu diesem Network-id gehört? Gibt es denn bei dnsmasq überhaupt eine Möglichkeit zwischen den einzelnen devices zu unterscheiden? Von Linux aus kenne ich es so, dass wenn man z.B. "ifup eth0" antippt, dann wird gleich dhcp-client mitgestartet. Und zwar für diese eth0. ich glaube, mit dem dhcp-Server sollte das auch möglich sein.
Wenn ich mich richtig erinnere, hat hier irgendwo im Forum jemand bereits versucht einzelne LAN-Ports zu trennen und sie dann mit separaten Netzen zu versorgen. Ob dabei auch noch DHCP-Server im Spiel war, kann ich mich aber nicht erinnern. Ich glaube, man sollte in der Richtung suchen: Der DHCP-Server soll zwischen den einzelnen IP-Devices unterscheiden können. Sonst wird es nichts mit DHCP.

MfG
 
ja toll, aber wocher soll denn dnsmasq wissen, dass eine bestimmte MAC-Adresse zu diesem Network-id gehört? Gibt es denn bei dnsmasq überhaupt eine Möglichkeit zwischen den einzelnen devices zu unterscheiden?

Ja, das sollte funktionieren. Zu der Network-ID steht Folgendes in der man dnsmasq:
The optional network-id is a alphanumeric label which marks this network so that dhcp options may be specified on a per-network basis. When it is prefixed with 'net:' then its meaning changes from setting a tag to matching it. Only one tag may be set, but more than one tag may be matched.

Mit den folgenden Konfigurationsmöglichkeiten für dnsmasq, kann die Zugehörigkeit der MAC-Adresse eines IP-Devices zur entsprechenden Network-ID hergestellt werden:
--dhcp-host=[<hwaddr>][,id:<client_id>|*][,net:<netid>][,<ipaddr>][,<hostname>][,<lease_time>][,ignore]
Specify per host parameters for the DHCP server. This allows a machine with a particular hardware address to be always allocated the same hostname, IP address and lease time. A hostname specified like this overrides any supplied by the DHCP client on the machine. It is also allowable to ommit the hardware address and include the hostname, in which case the IP address and lease times will apply to any machine claiming that name. For example --dhcp-host=00:20:e0:3b:13:af,wap,infinite tells dnsmasq to give the machine with hardware address 00:20:e0:3b:13:af the name wap, and an infinite DHCP lease. --dhcp-host=lap,192.168.0.199 tells dnsmasq to always allocate the machine lap the IP address 192.168.0.199. Addresses allocated like this are not constrained to be in the range given by the --dhcp-range option, but they must be on the network being served by the DHCP server. It is allowed to use client identifiers rather than hardware addresses to identify hosts by prefixing with 'id:'. Thus: --dhcp-host=id:01:02:03:04,..... refers to the host with client identifier 01:02:03:04. It is also allowed to specify the client ID as text, like this: --dhcp-host=id:clientidastext,.....

The special option id:* means "ignore any client-id and use MAC addresses only." This is useful when a client presents a client-id sometimes but not others.

If a name appears in /etc/hosts, the associated address can be allocated to a DHCP lease, but only if a --dhcp-host option specifying the name also exists. The special keyword "ignore" tells dnsmasq to never offer a DHCP lease to a machine. The machine can be specified by hardware address, client ID or hostname, for instance --dhcp-host=00:20:e0:3b:13:af,ignore This is useful when there is another DHCP server on the network which should be used by some machines.

The net:<network-id> sets the network-id tag whenever this dhcp-host directive is in use. This can be used to selectively send DHCP options just for this host. When a host matches any dhcp-host directive (or one implied by /etc/ethers) then the special network-id tag "known" is set. This allows dnsmasq to be configured to ignore requests from unknown machines using --dhcp-ignore=#known Ethernet addresses (but not client-ids) may have wildcard bytes, so for example --dhcp-host=00:20:e0:3b:13:*,ignore will cause dnsmasq to ignore a range of hardware addresses. Note that the "*" will need to be escaped or quoted on a command line, but not in the configuration file.

Hardware addresses normally match any network (ARP) type, but it is possible to restrict them to a single ARP type by preceding them with the ARP-type (in HEX) and "-". so --dhcp-host=06-00:20:e0:3b:13:af,1.2.3.4 will only match a Token-Ring hardware address, since the ARP-address type for token ring is 6.

As a special case, it is possible to include more than one hardware address. eg: --dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2 This allows an IP address to be associated with multiple hardware addresses, and gives dnsmasq permission to abandon a DHCP lease to one of the hardware addresses when another one asks for a lease. Beware that this is a dangerous thing to do, it will only work reliably if only one of the hardware addresses is active at any time and there is no way for dnsmasq to enforce this. It is, for instance, useful to allocate a stable IP address to a laptop which has both wired and wireless interfaces.
--dhcp-hostsfile=<file>
Read DHCP host information from the specified file. The file contains information about one host per line. The format of a line is the same as text to the right of '=' in --dhcp-host. The advantage of storing DHCP host information in this file is that it can be changed without re-starting dnsmasq: the file will be re-read when dnsmasq receives SIGHUP.
--dhcp-optsfile=<file>
Read DHCP option information from the specified file. The advantage of using this option is the same as for --dhcp-hostsfile: the dhcp-optsfile will be re-read when dnsmasq receives SIGHUP.
 
ja, aber dann könnte zirkon gleich statische leases verwenden. Dafür braucht er keine Ranges. Man kann statische leases außerhalb des Range-Bereiches nehmen, das mache ich und es funktioniert.
So wie ich zirkon aber verstanden habe kennt er nicht unbedingt alle MACs und will es voll dynamisch machen, also ohne leases.

MfG
 
Wenn der DHCP-Server nur verschiedene Ranges im gleichen IP-Subnetz anbieten kann/darf und er die Clients (MAC-Adresse) nicht kennt, dann müssen die Clients irgendwie den Wunsch äussern, aus welcher Range sie eine IP-Adresse haben wollen/dürfen. D. h. man muss die Clients konfigurieren.
Als Beispiel, in FreeBSD gibt es die /etc/dhclient.conf mit der Möglichkeit IP-Devices zu konfigurieren:
Code:
interface "re0"{
	      send host-name "AVALON";
              send dhcp-client-identifier 00:0b:f4:16:88:22;
	      supersede domain-name-servers 192.168.1.1, XXX.XXX.XXX.XXX, YYY.YYY.YYY.YYY;
	      fixed-address 192.168.1.135;
	      option netmask 255.255.255.0;
	      option broadcast-address 192.168.1.255;
              media "Ethernet 1000baseTX <full-duplex>";
          }
 
Zuletzt bearbeitet:
Die Frage ist nur, ob dnsmasq dann mit diesen Anfragen klar kommt. Bei deiner Beispielkonfiguration sind schon ziemlich viele Sachen fest vorgegeben. Z.B. DNS-Server. Das ist zwar in der Linuxwelt Gang und Gebe, entspricht aber nicht der eigentlichen Idee von DHCP. Wenn man schon DHCP macht, sollte auch die Adresse von DNS-Server vom DHCP-Server an den DHCP-Client mitgeteilt werden und nicht vorher eingetragen werden. Würde in solch einem Falle die von dir vorgeschlagene klientseitige Wunsch-Konfiguration auch funktionieren?

MfG
 
Ich habe diese Client-Configuration im Einsatz (auf FreeBSD):

Code:
interface "re0"{
	      send host-name "******";
                     send dhcp-client-identifier 00:33:g0:65:0f:h4;
	      supersede domain-name-servers 192.168.###.1, XXX.XXX.XXX.XXX, YYY.YYY.YYY.YYY;
          }

und sie funktioniert. In der /etc/rc.conf gibt es dazu noch folgende Zeile:

Code:
ifconfig_re0="netmask 0xffffff00 broadcast 192.168.###.255 [B][COLOR="Red"]DHCP[/COLOR][/B]"
 
a. Nimm die erste Zeile weg und schau was passiert
Code:
daemon.info dnsmasq[12828]: DHCPDISCOVER(lan) 00:ff:00:ff:00:ff no address available

b. Tausche erste und zweite Zeile um, vielleicht klappt es damit
Auch hier eine IP-Zuweisung aus dem "global-Bereich".


Aus der "man dnsmasq" verstehe ich das so, dass was hier "ovpn" ist sollte die "Network-ID" sein, mit der die "range" der IP-Adressen die der DHCP-Server festlegt, noch genauer definiert wird
Richtig, so war es gedacht, nachdem ich es so in ein oder zwei Linux-Foren gelesen habe und es wohl so funktionieren sollte. Auf einen Versuch wollte ich es dann natürlich ankommen lassen :) Wenn es sonst eine Möglichkeit gibt via OpenVPN die Adressvergabe zu regeln, ohne das dnsmasq meckert, wäre das natürlich auch nicht verkehrt.


Von Linux aus kenne ich es so, dass wenn man z.B. "ifup eth0" antippt, dann wird gleich dhcp-client mitgestartet. Und zwar für diese eth0. ich glaube, mit dem dhcp-Server sollte das auch möglich sein.
tap0 wäre das Device. Vielleicht geht es darüber?

Wenn ich mich richtig erinnere, hat hier irgendwo im Forum jemand bereits versucht einzelne LAN-Ports zu trennen und sie dann mit separaten Netzen zu versorgen. Ob dabei auch noch DHCP-Server im Spiel war, kann ich mich aber nicht erinnern. Ich glaube, man sollte in der Richtung suchen: Der DHCP-Server soll zwischen den einzelnen IP-Devices unterscheiden können. Sonst wird es nichts mit DHCP.
Da werde ich nochmal die Suche anschmeißen. Hatte die Themen dazu nur überflogen.


Wenn der DHCP-Server nur verschiedene Ranges im gleichen IP-Subnetz anbieten kann/darf und er die Clients (MAC-Adresse) nicht kennt, dann müssen die Clients irgendwie den Wunsch äussern, aus welcher Range sie eine IP-Adresse haben wollen/dürfen. D. h. man muss die Clients konfigurieren.
Mit der Konfiguration des VPN beim Client sollte die Sache eigentlich geregelt sein. In den meisten Fällen ist dann auch noch Windows die Grundlage.
 
Wenn ich mich richtig erinnere, hat hier irgendwo im Forum jemand bereits versucht einzelne LAN-Ports zu trennen und sie dann mit separaten Netzen zu versorgen. Ob dabei auch noch DHCP-Server im Spiel war, kann ich mich aber nicht erinnern. Ich glaube, man sollte in der Richtung suchen: Der DHCP-Server soll zwischen den einzelnen IP-Devices unterscheiden können. Sonst wird es nichts mit DHCP.
Es geht ja hier nicht um separate Subnetze, es handelt sich ja um IP-Ranges im gleichen Subnetz (255.255.255.0) mit 254 IP-Adressen. Wenn separate Subnetze erlaubt sind, wäre die Sache ja einfacher.

Z. B.: Mit der Netmask 255.255.255.128 (/25) stehn 2 Subnetze mit je 126 IP-Adressen zur Verfügung. Die Subnetze kannst Du über die die Netzwerkkennung und über die Broadcast-Adresse unterscheiden/auseinander halten. Die Daten für die Subnetze sind: Subnetz1: Kennung .0, Broadcast .127, Range/Hosts .1 - .126; Subnetz2: Kennung .128, Broadcast .255, Range/Hosts .129 - .254

Damit sollte auch der DHCP-Server aus dnsmasq klar kommen.
 
Hi,

Ich habe das gleiche Problem mit der IP-Vergabe bei Openvpn! Habe bei Openvpn die Push-Option an und es wird auch eine IP nebst Route vergeben, aber wehe ein zweiter Client kommt dazu, dann bekommt der die selbe IP wie der erste Client und das funzt dann nicht mehr! Wie kann ich es nun angehen das jeder Client eine eigne IP bekommt?!

Snip aus openvpn.conf
ifconfig-pool 192.168.1.51 192.168.1.55
push "route 192.168.1.1 "
ifconfig 192.168.1.1 255.255.255.0
push "route-gateway 192.168.1.1"
push "route 192.168.1.0 255.255.255.0"
max-clients 5

Danke für dringende Hilfe

Mfg SVen
 
Moin,

ohne den Rest der Config kann man dazu wenig sagen. Bei dir bekommt der Client die IP vom OpenVPN und nicht vom dnsmasq?

Die verschiedenen Clients benutzen auch sicher verschiedene Zertifikate? Ansonsten ist es natürlich klar und gewollt, dass das gleiche Zertifikat (= der gleiche Client) auch möglichst die gleiche IP bekommt...

Mit den erweiterten Einstellungen kannst du übrigens sogar jedem Client eine eigene, "feste" IP vorgeben.

Jörg
 
Die verschiedenen Clients benutzen auch sicher verschiedene Zertifikate? Ansonsten ist es natürlich klar und gewollt, dass das gleiche Zertifikat (= der gleiche Client) auch möglichst die gleiche IP bekommt...

Und daran wird es sicher bei mir liegen, gleiche Zertifikate, jetzt wo du es sagst! Ich dachte das jeder Client trotzdem eine eigene IP bekommt!

Mit den erweiterten Einstellungen kannst du übrigens sogar jedem Client eine eigene, "feste" IP vorgeben

Ja die Option habe ich auch schon gesehen, nur leider bin ich am Anfang mit der Matherie und froh das ich so weit gekommen bin.

Was müßte ich in der client-config zB. eintragen, damit jeder eien eigene IP bekommt, oder anders gefragt wie müßte ich mein config umstellen, damit jeder Client eine eigene IP bekommt?! Unter Linux ist es leichter für mich, da würde ich mir ein Script stricken mit ifconfig add... oder geht es auch Komfortabler?!

Danke für hilfreiche Tips


Mfg SVen
 
Also, wenn du für alle Clients unterschiedliche Client-Zertifikate nutzt, sollten die direkt von der Box verschiedene IPs per "pull" bekommen (dann aber "von der Box ausgewählt").

Du könntest ansonsten auch per "ifconfig" in der Client-Config direkt den Clients direkt eine IP zuweisen (z.B. ifconfig 192.168.1.61 255.255.255.0) oder eben den Haken bei den Experteneinstellungen und dann "erweiterte Clienteinstellungen":
Dann kannst du pro Client (identifiziert jeweils durch den Namen im Zertifikat) eine IP eintragen, die werden dann per push/pull zum Client kommen....

Jörg
 
1. Das Flag "ovpn" abhängig von der MAC-Adresse "00:ff:*:*:*:*" setzen:
Code:
dhcp-mac=ovpn,00:ff:*:*:*:*
2. Den Netzwerkkarten mit dem Flag "ovpn" Adressen aus definierter IP-Range zuweisen:
Code:
dhcp-range=net:ovpn,<ip-Start>,<ip-Ende>

Werden Gateway und DNS für die OpenVPN-Clients nicht benötigt dann zusätzlich noch:
Code:
dhcp-option=ovpn,3
dhcp-option=ovpn,6
 

Neueste Beiträge

Statistik des Forums

Themen
244,695
Beiträge
2,216,686
Mitglieder
371,314
Neuestes Mitglied
Gjorstn
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.