Un serveur possède deux interfaces WiFi, toutes deux configurées via Network Manager pour constituer des points d'accès.
Les clients connectés obtiennent des adresses IP dans les plages 10.42.0.0/24 et 10.42.1.0/24 (AFAICS via appelé dnsmasq
par NM). Je dois pouvoir attribuer une plage spécifique à une interface spécifique. Malheureusement, Network Manager les assigne de manière imprévisible ( wlan0
peut donc obtenir 10.42.0.0 aujourd'hui et 10.42.1.0 demain; ensuite wlan1
la plage restante), ce qui gâche mon problème iptables
car les règles de routage sont différentes pour ces interfaces.
J'ai essayé l' dhcp-range=
option dans /etc/dnsmasq.conf
(qui n'était pas présent car NM configure dnsmasq
via la ligne de commande) et quelques autres idées, mais je ne peux pas trouver de solution viable.
Avez-vous des idées sur la manière dont je peux contrôler quelle plage IP est affectée à quelle interface?
la source
dhcp-range=wlan0,10.42.0.2,10.42.0.253,72h
" dansdnsmasq.conf
(et similaire pourwlan1
). Cela n'a eu aucun effet. Je suppose que Network Manager s’exécutednsmasq
via cmd-line, qui a priorité.dnsmasq.conf
dans/etc
et dans/etc/NetworkManager/dnsmasq.d
mais les plages DHCP sont toujours assignés de manière imprévisible. J'ai oublié de mentionner qu'il s'agit de 16.04.1 LTS./etc/NetworkManager/dnsmasq.d/local
et ensuitesudo restart network-manager
.Réponses:
Vous pouvez déterminer le sous-réseau IPv4 utilisé en configurant une adresse manuelle, telle que
nmcli connection modify $SHARED_NAME ipv4.addresses 192.168.2.5/24
C'est documenté dans
man nm-settings
, voir ipv4.method./etc/NetworkManager/dnsmasq.d permet d’utiliser Dnsmasq en tant que plug-in DNS, pas pour votre cas d'utilisation du partage de connexion. Pour cela, il s’agit plutôt de /etc/NetworkManager/dnsmasq-shared.d - du moins dans les versions récentes de NM. Mais vous ne devriez pas avoir besoin de ça.
la source
ipv4.method shared
: NM ne parvient pas à définir correctement la passerelle et le DNS dans cette situation. Et le contrôle manuel est impossible -nmcli
refuse d'accepteripv4.dns
enipv4.method shared
mode. (Je suis assez sûr que j'essayé avant en modifiant directementaddress1=
dansNetworkManager/system-connections
- le résultat a été le même: IP pourrait être définie , mais la passerelle / DNS n'étaient pas.) Toutes les idées?shared
est spécifié ... une adresse est attribuée à l'interface dans 10.42. gamme x.1 / 24 ... .ipv4.dns
, tu veux direipv4.addresses
?ipv4.dns
carnmcli connection modify $SHARED_NAME ipv4.addresses 192.168.2.5/24
tous les clients sont connectés aux points d'accès sans passerelle ni paramètres DNS. Définir l'adresse enshared
mode ne devrait pas fonctionner du tout, mais créer des points chauds qui ne fonctionnent pas. Ce dont j'ai vraiment besoin, c’est d’un certain contrôle de "x" dans les plages 10.42.x.1 / 24 utilisées par NM (car il définit "x" de manière aléatoire).Après des heures à essayer différentes solutions, j'ai finalement pu spécifier un sous-réseau pour une connexion Hotspot à l'aide de Network Manager, puis définir une adresse IP manuelle sur le périphérique client pour une sorte d'adresse IP statique. Aucune des méthodes dnsmasq / dhcp ne fonctionne avec Network Manager. Vous devez éditer le fichier de connexion de Network Manager. Ces fichiers sont générés pour chaque connexion dans le répertoire suivant:
Je crois que lorsque vous créez un Hotspot, un nouveau fichier de connexion est créé et s'appelle Hotspot. Vous devez éditer ce fichier. Assurez-vous d’éditer le fichier de connexion Hotspot, sinon cela ne fonctionnera pas! Modifiez / ajoutez les lignes suivantes sous la section
[ipv4]
pour définir un sous-réseau. Assurez-vous qu'il a la lignemethod=shared
et utilisez l'adresse IP de votreaddress1=
choix, et NetworkManager émettra une adresse IP à tous les périphériques connectés dans le même sous-réseau. Le format de cette ligne estaddress1=ip/subnetmask,gateway
. La passerelle devrait être la même chose que l'ip. Voici à quoi[ipv4]
devrait ressembler la section:Une fois que vous avez terminé, enregistrez le fichier et exécutez la procédure suivante pour redémarrer Network Manager:
Une adresse IP doit maintenant être attribuée à vos appareils connectés sous le même sous-réseau que l'adresse IP que vous avez entrée. Dans cet exemple, il s'agirait de 192.168.125.x.
Pour obtenir une adresse IP statique, faites-le sur le périphérique côté client. Définissez une adresse IP manuelle pour cette connexion de point d'accès sans fil sous le même sous-réseau, en utilisant le même masque de sous-réseau et la même passerelle que ceux entrés dans le fichier de connexion de point d'accès.
Voici tout mon fichier de connexion Hotspot comme référence:
La documentation sur ce paramètre dans Network Manager peut être lue ici:
https://people.freedesktop.org/~lkundrak/nm-docs/nm-settings.html
Tableau 36. Paramètre ipv4
Nom de la clé: méthode
Type de valeur: chaîne
Valeur par défaut:
Valeur Description: Méthode de configuration IP. NMSettingIP4Config et NMSettingIP6Config prennent en charge "auto", "manuel" et "lien local". Voir la documentation spécifique à la sous-classe pour d'autres valeurs. En général, pour la méthode "auto", des propriétés telles que "dns" et "routes" spécifient les informations ajoutées aux informations renvoyées par la configuration automatique. Les propriétés "ignore-auto-routes" et "ignore-auto-dns" modifient ce comportement. Pour les méthodes qui n'impliquent aucun réseau en amont, telles que "partagé" ou "lien local", ces propriétés doivent être vides. Pour la méthode IPv4 "partagée", le sous-réseau IP peut être configuré en ajoutant une adresse IPv4 manuelle ou dans le cas contraire, vous choisissez 10.42.x.0 / 24.
Partie la plus importante:
la source
Ce qui suit semble fonctionner correctement - ces commandes forcent Network Manager à attribuer des plages DHCP sélectionnées aux points d'accès Wifi (10.42.0.x à wifiname1; 10.42.1.x à wifiname2):
nmcli connection modify wifiname1 ipv4.addresses 10.42.0.1
nmcli connection modify wifiname2 ipv4.addresses 10.42.1.1
Note:
wifinameN (N=1/2)
correspond aux fichiers dans/etc/NetworkManager/system-connections
.la source