Un serveur possède deux interfaces WiFi, toutes deux configurées via Network Manager pour être 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 dnsmasq
invoqué par NM). Je dois pouvoir affecter une plage spécifique à une interface spécifique. Malheureusement, Network Manager les affecte de manière imprévisible (donc wlan0
peut obtenir 10.42.0.0 aujourd'hui et 10.42.1.0 demain; alors wlan1
obtient la plage restante), ce qui gâche ma iptables
parce que les règles de routage sont différents pour ces interfaces.
J'ai essayé l'option dhcp-range=
dans /etc/dnsmasq.conf
(qui n'était pas présent sous la forme NM configure dnsmasq
via la ligne de commande) et quelques autres idées, mais ne trouve pas 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?
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.
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:
/etc/NetworkManager/system-connections
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 dans la section [ipv4]
pour définir un sous-réseau. Assurez-vous qu'il possède la ligne method=shared
et utilisez l'adresse IP de votre choix pour address1=
et NetworkManager émettra une adresse IP de tous les périphériques en cours de connexion dans le même sous-réseau. Le format de cette ligne est address1=ip/subnetmask,gateway
. La passerelle devrait être la même chose que l'ip. Voici à quoi devrait ressembler la section [ipv4]
:
[ipv4]
dns-search=
method=shared
address1=192.168.125.1/24,192.168.125.1
Une fois que vous avez terminé, enregistrez le fichier et exécutez la procédure suivante pour redémarrer Network Manager:
Sudo service network-manager restart
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:
[connection]
id=Hotspot
uuid=14032jb9-43c6-41c6-8d56-8b6b0f7xcce9
type=wifi
interface-name=wlan0
permissions=
secondaries=
timestamp=1486816539
[wifi]
mac-address=7C:84:DB:62:7B:3F
mac-address-blacklist=
mac-address-randomization=0
mode=ap
seen-bssids=7C:84:DB:62:7B:3F;
ssid=yournetworkname
[wifi-security]
group=
key-mgmt=wpa-psk
pairwise=
proto=
psk=yourpassword
[ipv4]
dns-search=
method=shared
address1=192.168.125.1/24,192.168.125.1
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
ip6-privacy=0
method=ignore
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:
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.
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
Remarque: wifinameN (N=1/2)
correspond aux fichiers de /etc/NetworkManager/system-connections
.