¿Configurar la caja de Linux como WAP para MyBookLive?

4

Heredé una vieja caja de Linux así como una MyBookLive y me gustaría que MyBookLive esté disponible a través de mi red inalámbrica, esencialmente usando la caja de Linux como puerta de enlace.

Acabo de borrar el cuadro de Linux (inicio) e instalé Ubuntu 12.04 en él. La configuración de mi red actualmente se ve así:

       (192.168.0.1
    netmask 255.255.255.0)     
ISP --- wireless router --- wlan0 on home (192.168.0.12)
               |             eth0 on home --- MyBookLive
            MacBook
        (192.168.0.11)

de modo que MyBookLive es básicamente un disco duro externo glorificado. El enrutador tiene un puerto Ethernet, pero está siendo utilizado por la computadora de mi compañero de cuarto, así que no puedo enchufar el MyBookLive directamente a él.

Ahora mismo puedo hacer ping a MyBookLive.local y MacBook.local desde casa, pero tengo problemas para entender y entender cuáles son los comandos iptables correctos para que mi MacBook vea mi MyBookLive a través de la red de Bonjour. Además, no estoy seguro de si necesito configurar el DNS para reenviar las direcciones xxx.local Bonjour / Zeroconf.

Intenté lo siguiente para reenviar toda mi red cableada (que solo tiene mi MyBookLive) a una única dirección IP:

sysctl net.ipv4.ip_forward=1
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp -j DNAT --to 192.168.0.66
iptables -t nat -A PREROUTING -i eth0 -p udp -j DNAT --to 192.168.0.66

pero no puedo hacer ping a esta dirección desde mi MacBook. Probablemente esto sea terriblemente incorrecto, pero soy un noob completo en la configuración de este tipo de red y podría necesitar ayuda de un experto para configurarlo correctamente.

Jiahao Chen
fuente

Respuestas:

0

Lo más fácil de hacer aquí sería configurar un NAT y reenviar los puertos requeridos desde la interfaz de inicio de wlan0 a los puertos equivalentes en la interfaz del disco duro externo.

La siguiente secuencia de comandos es un ejemplo que configuraría NAT de manera que los dispositivos conectados a eth0 en el hogar (mediante un interruptor o un TP cruzado) obtendrían acceso a la red inalámbrica.

#!/bin/sh
INTERNAL_IP=home.lan
INTERNAL_NM=255.255.255.0
INTERNAL=eth0
EXTERNAL=wlan0

ifconfig $INTERNAL $INTERNAL_IP netmask $INTERNAL_NM up

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $EXTERNAL -s 192.168.0.0/24 -j MASQUERADE
iptables -A FORWARD -i $EXTERNAL -o $INTERNAL -m state \
    --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INTERNAL -o $EXTERNAL -j ACCEPT

Para que la situación descrita funcione, los dispositivos de la red inalámbrica deben estar habilitados para "mirar hacia atrás" a la red NAT (que está oculta detrás de home.lan). El enfoque que intentó en la pregunta es básicamente correcto, excepto que se traduce en la dirección incorrecta. Desea reenviar los paquetes entrantes a puertos específicos en la interfaz home.lan a la dirección IP local oculta de mbl.lan

#(continued)
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 445 -j DNAT \
      --to mbl.lan:445
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 139 -j DNAT \
      --to mbl.lan:139

Esta configuración haría imposible ejecutar un servidor samba en el host doméstico, ya que el tráfico que llega a los puertos de samba predeterminados se envía al disco duro externo. Esto no es parte de la pregunta, pero una posible solución sería ejecutar el servicio de samba de inicio en un puerto diferente, o usar un valor de --dport como 4455 y configurar manualmente los clientes para conectarse a un puerto diferente cuando Accediendo a mi libro en vivo.

Tenga en cuenta que esta respuesta asume que se está utilizando samba en la unidad y que los puertos deberán ajustarse si se utiliza un protocolo diferente.

Una limitación notable de este método es que todas las conexiones que vienen a la unidad externa se verán como originadas en home.lan.

Alias ​​de red:
mbl.lan (mi libro, dirección ip en vivo; 192.160.0.66)
home.lan (home wlan0 ip address; 192.168.0.12)

Referencias:
http://www.centos.org/docs/4/html/rhel-sg-en-4/s1-firewall-ipt-fwd.html
http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2

Ярослав Рахматуллин
fuente
0

Creo que esa solución simple es configurar un dispositivo puente. br0 en linux-box y agregar interfaces eth0 y wlan0 lo.

  1. Descargar bridge-utils en ubuntu
  2. Añadir puente brctl addbr br0
  3. Añadir dispositivos de red al puente. brctl addif br0 eth0 y brctl addif br0 wlan0
  4. Establecer IP a su br0 interfaz (no establezca direcciones IP a eth0 o wlan0)
  5. Eliminar las reglas de DNAT de iptables
  6. Edita tu iptables config y reemplazar parámetros -i y -o con -m physdev --physdev-in y -m physdev --physdev-out

Esto creará virtual br0 interfaz, que actúa como si wlan0 y eth0 fueran una interfaz en una red. Eso le permite acceder a su disco de red desde cualquier PC desde su red.

EDITAR:

Esto está funcionando si estás usando tu wlan0 como AP en master mode. Supongo que estás usando hostapd para crear ese AP en linux-box.

Otra cosa que debo mencionar es que agregar la interfaz wlan0 en mi caso solo es posible después de que ejecute hostapd primero.

Gran recurso para hostapd y redes inalámbricas linux: http://linuxwireless.org/en/users/Documentation/hostapd

week
fuente
¿Has probado esto con una tarjeta inalámbrica? Nombre una o más tarjetas inalámbricas (controladores) compatibles con esto.
Ярослав Рахматуллин
Bueno, sí, a veces lo uso para conectar mi teléfono a redes sin wifi. Mi tarjeta wifi es Intel Centrino Advanced-N 6205. Yo tambien uso hostapd, que debo mencionar en mi publicación y mi wlan0 está configurado en modo maestro.
week
Estoy de acuerdo en que esta debe ser la manera correcta de hacerlo. He intentado el método de puente anteriormente pero mi horrible tarjeta wifi integrada no es compatible con el modo maestro.
Jiahao Chen
0

Tengo una configuración similar para pruebas a corto plazo.

Instale hostapd de esta manera: (hostapd es un demonio de punto de acceso inalámbrico)

sudo apt-get install hostapd

Aquí hay un archivo de configuración hostapd.conf realmente mínimo (tenga en cuenta que necesitará más configuración para proteger su red con WPA / WPA2).

interface=wlan0
driver=nl80211
ssid=AcidFlask
channel=9
hw_mode=g
country_code=NO
auth_algs=1
wpa=0
ignore_broadcast_ssid=0

Luego lanzo el demonio hostapd y reenvío de esta manera:

sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
ifconfig wlan0 172.20.99.1 netmask 255.255.255.0
iptables -t nat -A POSTROUTING -s 172.20.99.0/24 -o eth0 -j MASQUERADE
hostapd -d hostapd.conf

Finalmente, defino una IP estática en mi cliente (172.20.99.2 por ejemplo, con máscara de red 255.255.255.0, puerta de enlace 172.20.99.1 y DNS 8.8.8.8).

Esto realmente es una solución barebone, ya que carece de seguridad inalámbrica y DHCP, pero debería funcionar y usted puede construir dependiendo de sus necesidades además de esto.

También tenga en cuenta que esta solución requiere que su adaptador wifi soporte el modo AP:

  • ath9k funcionará en la mayoría de los casos
  • rtl8187 no funcionará AFAIK

EDITAR: Entendí mal su frase "usar la caja de Linux como un punto de acceso inalámbrico". Pensé que querías conectar tu caja de Linux a tu MyBookLive de forma inalámbrica. Por favor ignore mi solución.

BorisHajduk
fuente