Cableado al puente inalámbrico en Linux


17

Estoy intentando configurar mi Raspberry Pi como un puente, usando Debian wheezy. Tengo un hostapd.conf: (algunos detalles cambiaron por seguridad, y sí, sé que WEP no es bueno) ...

interface=wlan0
bridge=br0
driver=nl80211
auth_algs=1
macaddr_acl=0
ignore_broadcast_ssid=0
logger_syslog=-1
logger_syslog_level=0
hw_mode=g
ssid=MY_SSID
channel=11
wep_default_key=0
wep_key0=MY_KEY
wpa=0

Y esto en /etc/network/interfaces:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
auto br0
iface br0 inet dhcp
bridge-ports eth0 wlan0

Todo parece salir bien, pero no puedo asociarme con la conexión inalámbrica en puente, a pesar de que las luces parpadeantes en la memoria USB sugieren que se están intercambiando paquetes.

He leído en alguna parte que no todas las tarjetas / dispositivos se ejecutarán en modo hostap; no pasarán paquetes en una dirección: ¿es así? (La información era un poco vieja) - esta es mi tarjeta:

[    3.663245] usb 1-1.3.1: new high-speed USB device number 5 using dwc_otg
[    3.794187] usb 1-1.3.1: New USB device found, idVendor=0cf3, idProduct=9271
[    3.804321] usb 1-1.3.1: New USB device strings: Mfr=16, Product=32, SerialNumber=48
[    3.816994] usb 1-1.3.1: Product: USB2.0 WLAN
[    3.823790] usb 1-1.3.1: Manufacturer: ATHEROS
[    3.830645] usb 1-1.3.1: SerialNumber: 12345

Entonces, ¿qué me he equivocado aquí?

Actualización : Así que he realizado más investigaciones y puedo levantar el puente, pero aparentemente eso destruye la conexión de Ethernet (por cable), lo cual es extraño. Por ejemplo, en el RPi:

Arranque el sistema ...

ping 192.168.62.1 

(enrutador): esto funciona

Intentar asociarse con LAN inalámbrica ... falla (o mejor dicho, "con conectividad limitada" en un teléfono Android, no es bueno)

brctl showmacs br0

Esto solo muestra mac de wlan0 y mac de teléfono en este punto

brctl addif br0 eth0 wlan0

En este punto, ahora puedo asociar el teléfono con la red inalámbrica, pero ...

ping 192.168.62.1

... falla

Y de manera similar, ya no puedo hacer ping a RasPi desde ninguna otra máquina en la red

Corriendo

ifconfig br0

Sugiere que el puente está cayendo paquetes ...

¿Algunas ideas?

Actualización adicional : el /etc/network/interfacesarchivo ahora (y para la secuencia anterior) dice:

auto lo eth0

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Esto definitivamente es un tema para Super User, así que no te preocupes. Buena suerte con la recompensa, tengo curiosidad por saber cuál es la respuesta también.
Avance el

¿Qué iw dev wlan0 infomuestra? Y Google en su ID de dispositivo muestra que necesita un núcleo reciente o módulos inalámbricos para ejecutar este dispositivo en modo AP. Mira esto . ¿Qué núcleo y ath9kcontrolador estás ejecutando?
gertvdijk

Respuestas:


10

Puentes fáciles:

Hay un proyecto en sourceforge hecho solo para su situación. http://sourceforge.net/projects/bridger/ Incluso viene como un paquete deb.

Con respecto a los paquetes de 'caída':

  1. ¿Revisó para ver si iptables está configurado como predeterminado? sudo iptables --list debe decir "ACEPTAR, ACEPTAR, ACEPTAR" para un cuadro de este tipo. Si ese es el problema, apáguelo.

  2. ¿Estás incluso reenviando los paquetes, hermano? Asegúrese de que la línea "net.ipv4.ip_forward = 1" NO esté comentada en /etc/sysctl.conf (es por defecto), luego reinicie su red.

  3. El modo promiscuo no es compatible con su dongle inalámbrico. (lo que significa que no puede aceptar paquetes que no están destinados para ello)

Puente puro versus puente compartido:

  1. iface br0 inet dhcp indica un puente compartido , lo que significa que el puente mismo obtiene una ip y puede ser un punto final para el tráfico.

  2. Un puente puro no obtiene una dirección IP y solo reenvía el tráfico entre las dos interfaces

  3. Muestra de puente compartido / etc / network / interfaces config file (Debian / Ubuntu)

# Este archivo describe las interfaces de red disponibles en su sistema
# y cómo activarlos. Para obtener más información, consulte las interfaces (5).

# La interfaz de red de bucle invertido
auto lo
iface lo inet loopback

# Puente entre eth0 y wlan0
auto br0
iface br0 inet dhcp
  enlace IP previo al arranque eth0 abajo
  enlace IP pre-up configurado wlan0 down
  pre-up brctl addbr br0
  pre-up brctl addif br0 eth0 wlan0
  pre-up ip addr flush dev eth0
  pre-up ip addr flush dev wlan0
  enlace IP posterior a la bajada eth0 abajo
  enlace IP post-down establecido wlan0 down
  enlace IP post-down establecido br0 down
  post-down brctl delif br0 eth0 wlan0
  post-down brctl delbr br0

Reinicie la red: sudo /etc/init.d/networking restartdespués de realizar cambios complejos en la configuración de la red, es más fácil reiniciar en lugar de asegurarse de que todo se reinició correctamente en el reinicio.

Cree que tiene problemas de enrutamiento:

  1. Elimine DNS como causa probando con ping 8.8.8.8. Si esto funciona, entonces probablemente tenga un problema de DNS en su red.

  2. Verifique su puerta de enlace con la sudo ip routeesperanza que ve default via 192.168.1.1 dev br0 proto dhcp(suponiendo que su puerta de enlace sea 192.168.1.1). Si falta o está mal, corríjalo sudo ip route add default via 192.168.1.1. Prueba de nuevo:ping 8.8.8.8

  3. Renueve su ip de puente compartido con dhclient br0y vuelva a probar conping 8.8.8.8

  4. Revisar sus interfaces 'esclavos' con ifconfigy asegúrese de eth0 y wlan0 NO tienen direcciones IP. Ahora son parte del puente. Si lo hacen, asegúrese de eliminarlos de todos los archivos de configuración, configúrelos en static 0.0.0.0 o algo así.

Si NINGUNO de estos funciona, intente esa aplicación de puente Debian, y si eso no funciona, entonces su dongle inalámbrico no es compatible con el modo promiscuo. (véase más arriba)

Si funciona en cualquier momento aquí, reinicie y asegúrese de que todavía funciona.


Consulte la última actualización para el archivo de interfaces y, sí, todas las cadenas están configuradas para ACEPTAR
adrianmcmenamin

Estas instrucciones funcionan, al menos en el sentido de que si aplico dhclient br0 y especifico que eth0 está bloqueado a 0.0.0.0, ahora solo tengo que averiguar cómo hacerlo automático :)
adrianmcmenamin

OK, lo tengo funcionando con un poco de jiggery pokery a través de scripts rc.local (esencialmente tengo que reiniciar hostapd), para que obtengas la recompensa. Pero ahora mi servidor de calamar en el mismo cuadro está fallando, pero no le pregunté sobre eso, por lo que tendrá que ser otra pregunta.
adrianmcmenamin


¿Cuáles son las configuraciones eth0y wlan0en este ejemplo? Específicamente, ¿cómo configura el SSID y cualquier autenticación para wlan0?
Ian

6

Tengo algunos puentes inalámbricos trabajando en Debian Linux y Openwrt, por lo que estoy muy familiarizado con este problema.

Se perdió un comando importante: olvidó decirle a su controlador inalámbrico que transmita tramas de 4 direcciones (a veces llamadas WDS de manera incorrecta / histórica), que se requiere para el puente 802.11 / inalámbrico. Haga esto con el comando "iw dev wlan0 set 4addr on". Use una declaración "previa" en su archivo de interfaces de Debian en el puente para aplicarlo antes de abrir el puente. Tenga en cuenta que el modo de trama de 4 direcciones requiere soporte de controladores y algunos controladores o hardware antiguos de 802.11 pueden no ser compatibles.

También sospecho que sus problemas pueden haberse complicado por un error en el kernel de Linux que afecta específicamente a las interfaces puenteadas. Me encontré con este error y tuve que compilar mi propio wpa_supplicant de las fuentes porque la versión en Debian es antigua y está afectada. wpa_supplicant y hostapd comparten una base de código común, pero no estoy completamente seguro de que esto haya afectado tanto a hostapd como a wpa_supplicant.

Hay un compromiso para solucionar el problema aquí:

https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca6040

Tengo la impresión de que esto está en la versión 2.5, y sé que está en la fuente 2.6 actual. La versión actual de Debian es 2.4, que está rota. Por favor moleste el proyecto Debian para actualizar sus paquetes wpasupplicant y hostapd.

Aquí hay una configuración de muestra para un cliente de puente inalámbrico que usa WPA / WPA2 con un puente inalámbrico entre las interfaces wlan0 y eth0, con el host obteniendo una dirección DHCP en la interfaz br0 (reemplace "dhcp" con "manual" para ninguna dirección IP). Para una situación en la que desea ser el AP, incluya los comandos interface = y bridge = en hostapd.conf y omita los comandos wpa- * a continuación.

En su archivo / etc / network / interfaces:

allow-auto br0
iface br0 inet dhcp
    bridge_ports wlan0 eth0
    bridge_stp off
    bridge_waitport 5
    bridge_fd 0
    wpa-ssid mynetwork
    wpa-psk abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123
    wpa-iface wlan0
    wpa-bridge br0
    pre-up iw dev wlan0 set 4addr on
    post-down iw dev wlan0 set 4addr off

Y asegúrese de que su wpa_supplicant sea la versión 2.5 o posterior. No funcionará con wpa_supplicant 2.4 y las versiones actuales del kernel.

También debo tener en cuenta que actualmente hay un error de carrera en ifup donde las interfaces de puente pueden fallar en el momento del arranque, pero ese es otro problema.


3

Parece que necesita reenvío de IP.

tratar cat /proc/sys/net/ipv4/ip_forward

Si es un 0problema:echo 1 > /proc/sys/net/ipv4/ip_forward


sys.net.ipv4.ip_forwardes para enrutamiento IPv4, NAT, etc. Bridges funciona una capa más abajo en la pila de red.
Thomas Guyot-Sionnest

0

El puente solo puede funcionar cuando una interfaz recibe todos los paquetes; de lo contrario, verán los paquetes dirigidos solo a ellos. Sin embargo, su configuración actual puede describir una configuración para un enrutador, pero no para un puente.

eth0 y wlan0 no deben tener direcciones IP (es decir, 0.0.0.0) y, si lo desea, siempre puede usar una dirección IP para br0.

Aquí también hay documentación oficial: http://wiki.debian.org/BridgeNetworkConnections


1
Sé que esta es una publicación antigua, pero como la encontré mientras buscaba otra cosa, pensé en mencionar que no importa si una interfaz de puente tiene / no tiene una dirección IP en lo que respecta al puente. En Linux, una interfaz en puente también retransmitirá paquetes ARP (capa 2 de OSI). Cualquier conmutador asignará múltiples dispositivos conectados al otro lado del puente como aceptados en ese puerto del conmutador. Mi referencia es la experiencia la implementación de servidores Linux como enrutadores, puentes, cortafuegos, etc para implementaciones de alta disponibilidad en los principales centros de datos de nivel entre ellos uno primaria EE.UU. NAP de S. América
jetole

0

configurar wlan0

vi / etc / network / interface

iface eth0 inet static
address 192.168.2.1
network 192.168.2.0
netmask 255.255.255.0
broadcast 192.168.2.255

vi /etc/sysctl.conf

net.ipv4.ip_forward=1

vi /etc/rc.local

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o wlan0 -j MASQUERADE
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.