La conexión de Wifi a Ethernet en Ubuntu no funciona

22

Al ejecutar Windows, pude conectar mi conexión wifi a través de la conexión Ethernet de mi computadora portátil para que una variedad de dispositivos solo de ethernet pudieran desconectarse de mi wifi (Raspberry Pi, Xbox, etc.). Ahora estoy tratando de hacer lo mismo en Ubuntu, es decir, la configuración sería:

Enrutador inalámbrico ---> Wifi en la computadora portátil ---> puente a Ethernet ---> Dispositivo que necesita internet conectado al puerto Ethernet

Ahora he estado tratando de hacer que esto funcione en Ubuntu usando brctl

Usé el siguiente comando:

sudo brctl addif br0 eth0 wlan0

Y obtén el siguiente error:

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

Espero que alguien pueda ayudar, ya que me niego a creer que algo que puedo hacer en Windows muy fácilmente no se puede hacer en Linux.

Si necesita más información, hágamelo saber. Gracias

Zac Powell
fuente
Problema muy similar maneja en [ askubuntu.com/questions/155041/...
Legionair

Respuestas:

10

Esto no se puede hacer. No puede conectar una conexión de cliente WiFi. Si pudiera, no necesitaríamos WDS, simplemente puentearíamos.

El problema es muy simple: la especificación WiFi prohíbe que un punto de acceso transmita tráfico a través de la red WiFi a menos que algo autorice esa transmisión. Esto es en gran medida una reliquia de los días en que las redes WiFi eran muy lentas y tenían poca o ninguna seguridad.

El puente solo tiene una conexión de cliente con el punto de acceso. Esto solo autoriza al punto de acceso a transmitir el tráfico con destino al puente. Debido a que las máquinas conectadas al puente no son clientes del punto de acceso, el punto de acceso no tiene ninguna razón para enviar tráfico con destino a través del enlace WiFi. Entonces no lo hará.

Desafortunadamente, WiFi es suficiente como Ethernet que es fácil esperar que actúe como Ethernet. Pero es lo suficientemente diferente como para morderte.

La configuración de WDS es una autorización específica para que un punto de acceso envíe tráfico no vinculado a ninguno de sus clientes. Cuando ambos extremos admiten WDS, incluyen la dirección del punto final de conexión, así como la dirección del destino, autorizando al punto de acceso a enviar el tráfico.

Tienes que usar algo más que unir para hacer esto. Enrutamiento con NAT, por ejemplo. También puede usar el modo de cuatro direcciones, si ambos extremos del enlace WiFi lo admiten.

David Schwartz
fuente
3
Puede resolver este problema reescribiendo las direcciones mac con ebtables
ccarton
Noté que una persona aquí dice que puedes hacerlo en ubuntu ... y también he hecho algo así en Windows ... aunque dices que es imposible, entonces quizás puedas explicar cuál es la diferencia entre eso y esto. En Windows cuando haces esto youtube.com/watch?v=96Z1_6rX5qU WiFi conectado a internet. No hay cable en el conector Ethernet ... o cable de otra comp en el conector Ethernet. Luego, al seleccionar el adaptador WiFi y el adaptador Ethernet, los une, y luego otra computadora puede enchufar su cable y usar la conexión a Internet. Creo que la computadora portátil sigue siendo un cliente WiFi (y no un punto de acceso)
barlop
1
@DavidSchwartz Si una persona tiene una computadora portátil sin conexión inalámbrica que funciona y sin conmutador de red para conectarla a Internet, pero otra computadora portátil tiene acceso inalámbrico a Internet y no hay una memoria USB inalámbrica de repuesto. Entonces parece que la única solución es la falsificación de puentes. Si ambas computadoras portátiles tuvieran un adaptador de red inalámbrico que funcionara, ambas podrían simplemente conectarse al punto de acceso inalámbrico principal, sin necesidad de puntos de acceso adicionales y WDS. He utilizado la falsificación de puente cuando una computadora portátil no podía hacer la conexión inalámbrica.
barlop
1
Incorrecto. Para empezar, un WDS es una conexión WiFi, no muy diferente de las demás. En segundo lugar, están estos dispositivos cutie-pie llamados puentes de cliente o puentes de medios que se conectan a través de un AP y conectan de forma transparente 3-5 conectores con cable, que pueden ser concentradores, etc. Para estar seguros, probablemente haya limitaciones con respecto a cómo funcionan y para cuántos MAC pueden conectar, pero al final ... hay una manera. Demonios, incluso Linux te permitirá usar el modo WDS como STA si configuras 4addr como modo en el dispositivo a través del comando iw y el controlador te permite hacerlo. Puedes hacer un puente ... solo tiene ... condiciones.
Svartalf
1
@DavidSchwartz: ¿Enrutamiento? ¿Seriamente? Aquí hay una pista. La aplicación puede tener más de 500 nodos en la red. ¿Puedes hacer que el enrutamiento funcione con gracia de esa manera? "WDS real"? ¿Puedo estar seguro de que funcionará con Cisco, Aruba, Ubiquiti y otros? Si es así, entonces sí ... si no ... la premisa es un problema fuera de la caja. Lo tengo funcionando bastante bien con la locura que estoy tratando con el modo WDS-Station ... pero ¿funcionará con algo que no sea un hostapd o un dispositivo Linux derivado similar?
Svartalf
3

Tuve un problema similar con LXC, trabajé alrededor del problema de puente en dispositivos wifi. Primero necesita un dispositivo Ethernet de repuesto en la computadora. El truco es crear una ruta desde el dispositivo ethernet al wifi.

En el archivo del servidor, cambie / etc / network / interfaces, elija una red no utilizada para sus hosts virtuales, es decir, 10.0.0.0. Asigne una IP a su interfaz Ethernet de repuesto, aquí está eth0, uniéndolo así:

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

Una vez hecho esto, puede seguir el camino de MASQUERADE como lo respondió Kostyantyn aquí antes. Deben estar en rc.local o en un script que debe ejecutar al arrancar o antes de iniciar los dominios virtuales:

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

En el servidor virtual, configure las direcciones IP estáticas en / etc / network / interfaces. Estoy usando la red 10.0.0.0, comenzaré a usar desde .2, cuando crees más hosts virtuales probablemente usarás 3, y así sucesivamente. Si tiene muchos, puede considerar instalar un servidor dhcp para ellos. El .1 es la puerta de enlace, como se configuró anteriormente.

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

Configure también un servidor DNS, el mío era el enrutador de red, en /etc/resolv.conf:

nameserver 192.168.1.1

Espero que esto ayude

Francesc Guasch
fuente
Este es un truco de la capa 3 y no es realmente "puente": en el momento en que usa iptables, está enrutando.
Svartalf
0

Creo que lo que realmente necesitas no es un puente, pero tampoco:

  • SNAT (si la WLAN tiene una IP estática) (vea esta página )

o

  • MASQUERADE (si WLAN tiene IP dinámica, es decir, cambios de IP)

1) crear forwarding_enable_file.shcon el siguiente contenido:

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

2) Ejecute el archivo:

sudo ./forwarding_enable_file.sh

3) en el resto del host, especifique su cuadro de Ubuntu como puerta de enlace NOTA: si algunos de los cuadros también ejecutan Linux, puede hacerlo con este comando:

sudo ip route add default via ubuntu-ip

donde ubuntu-ip debe reemplazarse por su dirección IP ubuntu-box, es decir, 192.168.1.10

4) intente hacer ping a alguna IP, es decir 8.8.8.8 de otros hosts:

ping 8.8.8.8

5) verifique su configuración de DNS haciendo ping a algún dominio, es decir:

ping slivkoed.ru

6) si el paso 4) funciona y 5) no, entonces tiene problemas con su configuración de DNS. en tal caso ejecute con privilegios de root:

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

Ejecute el paso 5) nuevamente.

Puede encontrar más información sobre resolv.conf aquí .

Kostyantyn
fuente
Depende de lo que necesites. Si necesitas transparente (agita la mano), no, no quieres eso. Seriamente. Necesita el comportamiento evidenciado por cosas como el puente de medios TEW640-MB retirado de Trendnet (sesión en modo STA conectada a 4 puertos Ethernet). Es probable que esto solo se tenga con la operación en modo WDS (4addr) o con el enmascaramiento MAC de ebtables (que no debe confundirse con lo que ha publicado), los cuales tienen sus propios dolores y problemas.
Svartalf
-1

Debe desactivar las interfaces antes de unirlas.

ifconfig eth0 abajo

ifconfig wlan0 down

Escandaloso
fuente
1
Todavía recibo el mismo error con ambas interfaces desactivadas
Zac Powell,
@Zac Powell, ¿estás usando Network-Manager? Tuve algunas experiencias pasadas que podrían interferir. En ese caso, puede intentar detener el servicio y volver a recuperarlo después
Legionair
Sí, estoy bien, así que ¿debería intentar derribarlos a ambos y detener al administrador de red y luego hacer el birdge y luego recuperar todo?
Zac Powell
sí, con service network-manager stop, luego haz lo tuyo, comienza de nuevo conservice network-manager start
Legionair
sigue sin funcionar: / todo está cerrado pero sigue recibiendo el mismo error
Zac Powell
-4
sudo iw dev wlan1 set 4addr on
Emilio Navarrete Lineros
fuente
¿Te importaría explicar cómo esto resuelve el problema de OP?
Braiam
@Braiam Mi respuesta explica bastante bien por qué esto funcionaría si fuera compatible con AP.
David Schwartz el
Lamentablemente, no funciona con muchos AP. En cuanto a cómo PODRÍA resolver su problema si funcionara bien con la mayoría de los AP es que le da la capacidad de AP al agregar un MAC adicional al número dado en cada trama 802.11 para retransmitir tramas para más que solo el MAC autenticado.
Svartalf
De otra respuesta: serverfault.com/a/554663/280693
jhutar