
En Arch Linux, me gustaría que eth0 (conectado a un enrutador en puente) comparta la conexión recibida de wlan0. He leído tutoriales pero no tengo conocimientos de comandos como otros usuarios y no los entiendo completamente.
Respuesta1
ACTUALIZAR
No es posible establecer un puente entre interfaces inalámbricas (cliente también conocido como modo estación) y cableadassegún este hilo en linux-ath5k-devel.
Configurar NAT
En su lugar, se debería configurar NAT:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Asignando una IP
Luego tienes que asignarte direcciones IP a ti mismo:
ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
Instalar el demonio dhcp
Instale un servidor dhcp y agregue el siguiente texto a su archivo de configuración (en /etc/dhcpd.conf o algo similar)
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.120;
option routers 10.0.0.1;
option domain-name-servers the-ip-address-you-have-in-etc-resolv.conf;
}
Iniciar dhcpd
Luego inícialo /etc/init.d/dhcpd start
¡Y eso es!
Lea solo a continuación si está interesado en la configuración del puente que no funciona
brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0
Primero creas una interfaz puente. Elijo un nombre arbitrario.mipuenteluego agréguele interfaces.
Debe solicitar una nueva dirección IP (esto solo es necesario si desea obtener una IP válida para el dispositivo puente):
dhclient -d mybridge
Respuesta2
Apuente wifiinterfaz que puede utilizar iw
la herramienta parahabilitar 4adrasimismo:
# iw dev <wifiInterface> set 4addr on
es decir:
# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported
# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>
Ahora debería funcionar. Puedes mostrar puentes usando:
# brctl show
Respuesta3
Puente wlan y 4addr:
Conectar wlan0 es una molestia. Normalmente no puede agregarlo a una interfaz puente (brctl devuelve "Operación no permitida"), y el uso del filtro "puenteado" de VirtualBox genera un gran lío de conflictos ARP y DHCP. La causa de esto es que las tramas 802.11 contienen sólo tres direcciones por defecto: las direcciones MAC tanto de los dispositivos inalámbricos (portátil y AP) como del destinatario final (como en Ethernet). Siempre se supone que sólo hay un posible originador.
802.11 puede transportar la cuarta dirección MAC del originador, y los repetidores la utilizan en modo WDS. Esta característica también se puede habilitar en Linux, usando iw, y habilitar este modo permitirá que wlan0 se use en interfaces puente, así como con redes puenteadas de VirtualBox:
iw dev wlan0 set 4addr on
Sin embargo, con 4addr habilitado, es probable que el AP lo ignore por completo: la asociación se realiza correctamente pero todos los marcos de datos desaparecen en el éter. Esto podría deberse a razones de seguridad (porque es muy difícil falsificar la dirección MAC de origen. Sí). En mi enrutador (que ejecuta OpenRG), es necesario habilitar el modo "WDS" para la interfaz AP inalámbrica, agregar un dispositivo WDS restringido a mi dirección MAC de la computadora portátil y agréguela al puente LAN. Los paquetes de 4 direcciones ahora funcionan.
Sin embargo, hay otro problema con esto: el enrutador ahora rechaza paquetes de tres direcciones de la computadora portátil, lo que puede ser bastante inconveniente (tener que alternar 4addr cada vez que se cambia la red WLAN). La solución es agregar, en la computadora portátil, una segunda interfaz inalámbrica vinculada al mismo dispositivo, pero con una dirección MAC diferente. Primero deshaga la configuración anterior:
iw dev wlan0 set 4addr off
Luego, agregue una segunda interfaz (el nombre fue elegido arbitrariamente) con una dirección MAC diferente:
iw dev wlan0 interface add wds.wlan0 type managed 4addr on
ip link set dev wds.wlan0 addr <addr>
ip link set dev wds.wlan0 up
Aquí debe coincidir con la dirección del dispositivo WDS configurada en el enrutador; aparte de eso, puede ser cualquier dirección MAC válida. La MAC original de wlan0 permanece para uso "normal".
Es posible utilizar wlan0 y wds.wlan0 al mismo tiempo, aunque solo he probado la asociación al mismo AP dos veces, no a AP diferentes. Supongo que al menos deberían estar en el mismo canal.
Algunas personas han preguntado por qué usar esto cuando VirtualBox puede conectar WiFi "muy bien". La respuesta es que VirtualBox no envía las direcciones MAC de las máquinas virtuales; más bien, también realiza NAT en la capa MAC. – 2014-08-22
Puente WLAN directo
En determinadas circunstancias, también puedes utilizar wlan_kabel. Utiliza sockets de paquetes para conectar directamente dispositivos WLAN* con dispositivos Ethernet. Sin embargo, sólo puede conectar un único MAC a la vez con wlan_kabel. No tiene el inconveniente de estar bloqueado por puntos de acceso, porque sólo se utiliza la MAC original del dispositivo WLAN. En su caso, esto significaría que wlan0 solo podría ser utilizado por una VM y ni siquiera por el host. Puedes obtenerwlan_kabel aquí. Esto es similar almacvlanssolución.
Puente con ipvlan
IP Vlan no tiene la limitación de un puente, podría usarse para conectar una red, detalles sobre cómo usarlose puede encontrar aquí
alternativa de mascarada
En su lugar, se puede usar el enrutamiento de Linux con iptables-masquerade e ip_forward para lograr un puente, pero como se mencionó, esto requiere habilitar ip_forward y hará que Linux actúe como un enrutador; esto debe configurarse con cuidado porque podría introducir algún problema de seguridad.
# bridge setup
brctl addbr br0
ifconfig br0 10.10.20.1/24 up
# enable ipv4 forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# netfilter cleanup
iptables --flush
iptables -t nat -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# netfilter network address translation
iptables -t nat -A POSTROUTING -o wlan0 -s 10.10.20.0/24 -j MASQUERADE
La interfaz br0 tendrá entonces acceso a la red wlan0.
Importante y relacionado
Además, y muy importante, no debes utilizar comandos obsoletos y obsoletos comoifconfig, brctl, etcétera. La suite iproute2 contiene comandos para todo esto, incluida la configuración de interfaces virtuales (algo para lo que alguna vez tuvimos que usar openvpn) y la creación de puentes. Si no sabes cómo configurar un puente con ip, allá vamos
ip tuntap add tap0 mode tap user root
ip link set tap0 up
ip link add br0 type bridge
ip link set tap0 master br0
ip link set eth0 master br0
ip addr add 10.173.10.1/24 dev br0
ip link set br0 up
Con este conjunto de comandos, creamos una interfaz virtual llamada tap0, luego un puente llamado br0, luego esclavizamos a eth0 y tap0 al puente, al que asignamos una dirección IP de 10.173.10.1, luego lo activamos todo. Se requieren tres instancias separadas para activar las interfaces (para tap0, eth0 y br0).
El truco para que esto funcione es usar proxy.arp, que permite que su PC (no su VM/contenedor Linux/espacio de nombres de red) responda consultas ARP en su lugar.
En otras palabras, al utilizar el reenvío IPv4 entre su interfaz de hardware y su interfaz virtual, cree que puede conectar su VM/LXC/NNS a su LAN como si fuera una interfaz física, pero esto no es cierto: se está olvidando absolutamente tráfico ARP fundamental, que es lo que realmente permite que LAN funcione. Entonces, el problema es: si reenvío correctamente el tráfico IPv4, ¿cómo puedo reenviar también el tráfico ARP para que mi VM/LXC/NNS funcione? El truco consiste en utilizar proxy-arp.
La respuesta completa a eso está enBlog de Bohdi Zazen, con el revelador título: Tarjetas inalámbricas puente. Utiliza un paquete obsoleto, uml-utilities, para crear una interfaz virtual mediante el comando tunctl: este es el único comando para el que utiliza uml-utilities, por lo que puedes descuidar la descarga del paquete y utilizar el comando I. Escribí arriba para crear una interfaz tap o tun, lo que quieras, simplemente modifica el comando en consecuencia. luego cree un par veth para su LXC y ahora cree un puente entre tap0 y veth0. Este puente, llamado br0, es para lo que debes usar proxy-arp, en lugar de la simple interfaz tap0 descrita por Bohdi Zazen.
Fuentes:Askubuntu.com,nullroute.eu.org,firejail.wordpress.com,superusuario.com
Respuesta4
4addr, como se describe en otras respuestas, es sin duda la mejor manera cuando lo admite el adaptador/controlador, pero no todas lo hacen. NAT puede funcionar para algunas cosas, pero obtener una comunicación adecuada en ambos sentidos en la LAN será problemático (por ejemplo, conectar una impresora o acceder a otros dispositivos IoT en el otro lado de la NAT). Cualquier cosa que dependa de transmisión/multidifusión (por ejemplo, descubrimiento automático, bonjour) fallará a través de NAT.
La alternativa es utilizar un proxy ARP (parprouted) como se describe enhttps://wiki.debian.org/BridgeNetworkConnectionsProxyArp. Configuré esto en una Raspberry Pi para una impresora y funciona de maravilla (agregué una suspensión de 10 segundos en los post-up
comandos para permitirle obtener una dirección IP primero, puede que tenga que ver con la lentitud de mi antiguo RPi...)