Le pontage Wifi vers Ethernet sur Ubuntu ne fonctionne pas

22

Lors de l'exécution de Windows, j'ai été en mesure de relier ma connexion wifi via la connexion Ethernet de mon ordinateur portable afin qu'une gamme de périphériques uniquement Ethernet puisse se superposer à mon wifi (Raspberry Pi, Xbox, etc.). J'essaie maintenant de faire la même chose dans Ubuntu, c'est-à-dire que la configuration serait:

Routeur sans fil ---> Wifi sur ordinateur portable ---> pont vers Ethernet ---> Appareil qui a besoin d'Internet branché sur le port Ethernet

Maintenant, j'ai essayé de faire fonctionner cela dans Ubuntu en utilisant brctl

J'ai utilisé la commande ci-dessous:

sudo brctl addif br0 eth0 wlan0

Et obtenez l'erreur suivante:

can't add wlan0 to bridge br0: Operation not supported

J'espère que quelqu'un peut m'aider car je refuse de croire que quelque chose que je peux faire dans Windows très facilement ne peut pas être fait sous Linux.

Si vous avez besoin de plus d'informations, faites le moi savoir. Merci

Zac Powell
la source
Problème très similaire traité dans [ askubuntu.com/questions/155041/…
Legionair

Réponses:

10

Cela ne peut pas être fait. Vous ne pouvez pas relier une connexion client WiFi. Si vous le pouviez, nous n'aurions pas besoin de WDS, nous ferions simplement le pont.

Le problème est très simple - un point d'accès est interdit par la spécifaction WiFi de diffuser du trafic sur le réseau WiFi à moins que quelque chose n'autorise cette transmission. C'est en grande partie une relique de l'époque où les réseaux WiFi étaient très lents et avaient une sécurité médiocre, voire nulle.

Le pont n'a qu'une connexion client au point d'accès. Cela autorise uniquement le point d'accès à transmettre le trafic à destination du pont. Étant donné que les machines connectées au pont ne sont pas des clients du point d'accès, le point d'accès n'a aucune raison d'envoyer du trafic à leur destination via la liaison WiFi. Il ne le fera donc pas.

Malheureusement, le WiFi est suffisant comme Ethernet pour qu'il soit facile de s'attendre à ce qu'il agisse comme Ethernet. Mais c'est juste assez différent pour vous mordre.

La configuration WDS est une autorisation spécifique pour un point d'accès d'envoyer du trafic non lié à aucun de ses clients. Lorsque les deux extrémités prennent en charge WDS, elles incluent l'adresse du point d'extrémité de pontage ainsi que l'adresse de la destination, autorisant le point d'accès à envoyer le trafic.

Pour ce faire, vous devez utiliser autre chose qu'un pont. Routage avec NAT, par exemple. Vous pouvez également utiliser le mode quatre adresses, si les deux extrémités de la liaison WiFi le prennent en charge.

David Schwartz
la source
3
Vous pouvez résoudre ce problème en réécrivant les
ccarton
Je remarque qu'une personne ici dit que vous pouvez dans ubuntu..et j'ai fait quelque chose comme ça dans Windows aussi .. bien que vous disiez que c'est impossible, alors peut-être pouvez-vous expliquer quelle est la différence entre cela et cela. Dans Windows lorsque vous faites cela, youtube.com/watch?v=96Z1_6rX5qU WiFi connecté à Internet.Pas de câble dans le connecteur Ethernet..ou câble d'une autre maquette dans le connecteur Ethernet. Ensuite, en sélectionnant l'adaptateur WiFi et l'adaptateur Ethernet, il les relie, puis un autre ordinateur peut brancher son câble et utiliser la connexion Internet.L'ordinateur portable est toujours un client WiFi, je pense (et non un point d'accès)
barlop
1
@DavidSchwartz Si une personne a un ordinateur portable sans fil fonctionnel et sans commutateur réseau pour le brancher pour un accès Internet, mais un autre ordinateur portable a un accès Internet sans fil, et il n'y a pas de clé USB sans fil de rechange. Ensuite, il semble que la seule solution soit le faux pontage. Si les deux ordinateurs portables avaient une carte réseau sans fil fonctionnelle, ils pourraient tous les deux se connecter au point d'accès sans fil principal, pas besoin de points d'accès supplémentaires et WDS .. J'ai utilisé le faux pontage lorsqu'un ordinateur portable ne pouvait pas faire sans fil.
barlop
1
Incorrect. Pour commencer, un WDS est une connexion WiFi, un peu comme les autres. Deuxièmement, il y a ces appareils cutie-pie appelés ponts clients ou ponts multimédias qui se connectent via un AP et pontent de manière transparente 3 à 5 prises câblées, qui peuvent être des concentrateurs, etc. Pour être sûr, il y a probablement des limites à leur fonctionnement et combien de MAC ils peuvent ponter POUR, mais au final ... il y a un moyen. Enfer, même Linux vous permettra d'utiliser le mode WDS comme STA si vous définissez 4addr comme mode sur l'appareil via la commande iw et le pilote vous permet de le faire. Vous pouvez combler ... c'est juste obtenu ... des conditions.
Svartalf
1
@DavidSchwartz: Routage? Sérieusement? Voici un indice. L'application peut avoir plus de 500 nœuds dans le réseau. Pouvez-vous faire en sorte que le routage fonctionne correctement de cette façon? "Vrai WDS"? Puis-je être assuré que cela fonctionnera avec Cisco, Aruba, Ubiquiti et autres? Si oui, alors oui ... sinon ... la prémisse est un problème hors de la boîte. Je le fais fonctionner plutôt bien avec la folie que j'essaie avec le mode WDS-Station ... mais cela fonctionnera-t-il avec autre chose qu'un hostapd ou un périphérique Linux dérivé similaire?
Svartalf
3

J'ai eu un problème similaire avec LXC, j'ai travaillé autour du problème de pontage dans les appareils wifi. Vous devez d'abord disposer d'un périphérique Ethernet de rechange dans l'ordinateur. L'astuce consiste à créer un itinéraire à partir du périphérique Ethernet vers le wifi.

Dans le fichier serveur, changez / etc / network / interfaces, choisissez un réseau inutilisé pour vos hôtes virtuels, c'est-à-dire 10.0.0.0. Attribuez une IP à votre interface Ethernet de rechange, ici c'est eth0, en le pontant comme ceci:

auto br0
iface br0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    bridge_ports eth0
    bridge_fd 0
    bridge_maxwait 0

Une fois cela fait, vous pouvez suivre la voie MASQUERADE comme l'a répondu Kostyantyn ici avant. Ceux-ci doivent être dans rc.local ou dans un script que vous devez exécuter au démarrage ou avant de démarrer les domaines virtuels:

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# echo "1" > /proc/sys/net/ipv4/ip_forward

Dans le serveur virtuel, configurez les adresses IP statiques dans / etc / network / interfaces. J'utilise le réseau 10.0.0.0, je commencerai à utiliser à partir de .2, lorsque vous créerez plus d'hôtes virtuels, vous en utiliserez probablement 3, etc. Si vous en avez plusieurs, vous pouvez envisager d'installer un serveur DHCP pour ceux-ci. Le .1 est la passerelle, comme configuré précédemment.

auto eth0
iface eth0 inet static
    address 10.0.0.2
    netmask 255.255.255.0
    broadcast 10.0.0.255
    gateway 10.0.0.1

Configurez également un serveur DNS, le mien était le routeur réseau, dans /etc/resolv.conf:

nameserver 192.168.1.1

J'espère que cela t'aides

Francesc Guasch
la source
C'est une supercherie de couche 3 et pas vraiment un "pont" - au moment où vous utilisez iptables, vous routez.
Svartalf
0

Je pense que ce dont vous avez vraiment besoin n'est pas d'un pont mais:

  • SNAT (si le WLAN a une IP statique) (voir cette page )

ou

  • MASQUERADE (si le WLAN a une IP dynamique - c'est-à-dire que l'IP change)

1) créez forwarding_enable_file.shavec le contenu suivant:

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

2) Exécutez le fichier:

sudo ./forwarding_enable_file.sh

3) sur le reste de l'hôte, spécifiez votre boîte Ubuntu comme passerelle REMARQUE: si certaines boîtes exécutent également Linux, vous pouvez le faire avec cette commande:

sudo ip route add default via ubuntu-ip

ubuntu-ip doit être remplacé par votre adresse IP ubuntu-box, c'est-à-dire 192.168.1.10

4) essayez d'envoyer une requête ping à une adresse IP, par exemple 8.8.8.8 à partir d'autres hôtes:

ping 8.8.8.8

5) Vérifiez vos paramètres DNS en exécutant une commande ping sur un domaine, c'est-à-dire:

ping slivkoed.ru

6) si l'étape 4) fonctionne et que 5) ne fonctionne pas, vous avez des problèmes avec vos paramètres DNS. dans ce cas, exécutez avec les privilèges root:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

Exécutez à nouveau l'étape 5).

Vous trouverez plus d'informations sur resolv.conf ici .

Kostyantyn
la source
Cela dépend de ce dont vous avez besoin. Si vous avez besoin de transparence (vagues de la main), non, vous ne le voulez pas. Sérieusement. Vous avez besoin du comportement mis en évidence par des éléments comme le pont multimédia TEW640-MB retiré de Trendnet (session en mode STA connectée à 4 ports Ethernet). Il est probable que cela ne soit possible qu'avec le fonctionnement en mode WDS (4addr) ou avec le masquage MAC ebtables (qui ne doit pas être confondu avec ce que vous avez publié) - qui ont tous deux leurs propres problèmes et problèmes.
Svartalf
-1

Vous devez supprimer les interfaces avant de les combler.

ifconfig eth0 down

ifconfig wlan0 down

Scandaliste
la source
1
Toujours la même erreur avec les deux interfaces en panne
Zac Powell
@Zac Powell utilisez-vous Network-Manager? J'ai eu quelques expériences passées qui pourraient interférer. Dans ce cas, vous pouvez essayer d'arrêter le service et de le
réactiver
Oui, je suis d'accord, alors je devrais essayer de les faire tomber et d'arrêter le gestionnaire de réseau, puis de faire le birdge et de tout ramener?
Zac Powell
oui, avec service network-manager stop, alors faites votre truc, recommencez avecservice network-manager start
Legionair
ne fonctionne toujours pas: / tout est arrêté mais toujours la même erreur
Zac Powell
-4
sudo iw dev wlan1 set 4addr on
Emilio Navarrete Lineros
la source
Vous voulez expliquer comment cela résout le problème de l'OP?
Braiam
@Braiam Ma réponse explique à peu près pourquoi cela fonctionnerait si elle était prise en charge par l'AP.
David Schwartz
Malheureusement, cela ne fonctionne pas avec de nombreux points d'accès. Quant à la façon dont cela POURRAIT résoudre son problème s'il fonctionnait bien avec la plupart des points d'accès, c'est qu'il donne la capacité AP en ajoutant un MAC supplémentaire au nombre donné dans chaque trame 802.11 pour relayer les trames pour plus que le MAC authentifié.
Svartalf
D'une autre réponse: serverfault.com/a/554663/280693
jhutar