El 07/06/16 a las 15:34, JAP escribió:
Estimados:

Una vez más, yo peleándome con las redes.
Paso a explicar.

Tengo un equipo corriendo Debian "jessie":
# uname -a
Linux javier 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-1 (2016-03-06)
x86_64 GNU/Linux

¿Qué quiero hacer?
Que los equipos conectados por WiFi a la placa wlan0 accedan a internet
a través de la placa eth1.


Tengo una red cableada a Internet:
# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr a0:f3:c1:01:da:92
           inet addr:192.168.2.52  Bcast:192.168.2.255  Mask:255.255.255.0
           inet6 addr: fe80::a2f3:c1ff:fe01:da92/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:1523 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1596 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:705060 (688.5 KiB)  TX bytes:299878 (292.8 KiB)

Me conecto a dicha red mediante un portal cautivo provisto por un
servido ZeroShell, sobre el cual me identifico con un "script" en python.

Tengo una placa de red inalámbrica que provee servicio dhcp para mis
otros aparatos:

En otro entorno más "natural", lo que he hecho toda mi vida, fue montar
un puente br0 desde eth1 a wlan0.
El problema que tengo es que en este lugar, debo pasar por el portal
cautivo, y el maldito no me permite más de una conexión con una mac
definida. Los puentes (bridges), generan una nueva MAC, y asignan
direcciones IP del servidor. Y como dije, con una clave, no puedo tener
más de una conexión. Y el BAFH no me da otra clave de acceso.

Por lo que presto y diligente, decidí hacer una conexión NAT.
Para ello, monté un servidor dhcp con isc-dhcp-server, el cual da su
servicio a través de la placa inalámbrica:
# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:87:30:23:0e:a8
           inet addr:192.168.5.1  Bcast:192.168.5.255  Mask:255.255.255.0
           inet6 addr: fe80::287:30ff:fe23:ea8/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:265 errors:0 dropped:0 overruns:0 frame:0
           TX packets:861 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:12142 (11.8 KiB)  TX bytes:60578 (59.1 KiB)

Mi celular se conecta al enrutador configurado sin inconvenientes:
# ping 192.168.5.10 -c 3
PING 192.168.5.10 (192.168.5.10) 56(84) bytes of data.
64 bytes from 192.168.5.10: icmp_seq=1 ttl=64 time=150 ms
64 bytes from 192.168.5.10: icmp_seq=2 ttl=64 time=195 ms
64 bytes from 192.168.5.10: icmp_seq=3 ttl=64 time=203 ms
--- 192.168.5.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 150.223/183.033/203.074/23.394 ms


He intentado montar una NAT de no menos de 30 formas distintas, y no
logro hacer que el navegador del celular vea internet.
Las órdenes que he estado utilizando básicamente son

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i wlan0 -j ACCEPT

Que, si la teoría no me falla, enmascara eth1, y reenvía los paquetes
que vienen de wlan0.

# iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 3 packets, 545 bytes)
  pkts bytes target     prot opt in     out     source destination

Chain INPUT (policy ACCEPT 2 packets, 307 bytes)
  pkts bytes target     prot opt in     out     source destination

Chain OUTPUT (policy ACCEPT 58 packets, 5878 bytes)
  pkts bytes target     prot opt in     out     source destination

Chain POSTROUTING (policy ACCEPT 36 packets, 2841 bytes)
  pkts bytes target     prot opt in     out     source destination
    22  3037 MASQUERADE  all  --  any    eth1    anywhere anywhere

Las reglas de iptables, las he variado en muchas formas, y realmente, ya
no sé qué hacer.
Otros ejemplo que he usado:

iptables -t nat -A POSTROUTING ! -d 192.168.5.0/24 -o eth1 -j SNAT
--to-source 192.168.2.52

También:
iptables -t nat -A POSTROUTING ! -d 192.168.5.0/24 -o eth1 -j MASQUERADE

Bueno. No funciona.
El teléfono no tiene accesos a internet.
Google no me da la solución.

Escucho ofertas

Muchas gracias en adelanto.

JAP




TIP:
"El orden de las interfaces en /etc/network/interfaces,
ALTERA EL PRODUCTO"

He solucionado el problema.

Mi red tiene ADEMÁS de las dos que mencioné, una interfaz en el segmento 10.0.0.0. Yo estaba haciendo todo bien, salvo que el ORDEN de inicio de las interfaces estaba generando el problema.
Como "receta" para el futuro, transcribo todo lo que hice.


CÓMO COMPARTIR POR WiFi UNA CONEXIÓN DE RED EN UN AMBIENTE MUY CONTROLADO POR UN BAFH.

Entorno:
Una red corporativa conectada a eth0 en el segmento 10.0.0.0
Una red internet, conectada a un enrutador de portal cautivo ZeroShell a eth1 en el segmento 192.168.2.0/24 Una red WiFi, como enrutador privado, conectado a wlan0, en el segmento 192.128.0.0/24

¿Qué queremos hacer?
Habilitar la conexión de aparatos con WiFi, como una NAT hacia internet.
Es de destacar que el portal cautivo SÓLO PERMITE UNA CONEXIÓN A UNA PLACA DE RED ASOCIADA A UNA CUENTA DE USUARIO, razón por la cual NO ES POSIBLE UTILIZAR TÉCNICAS DE PUENTE (bridging), como describo en http://wiki.debian.org/es/Compartir_red_fisica_con_WiFi

1. Instalar lo necesario

# aptiude install iw wireless-tools hostapd dhcp3-server

2. Configurar el enrutador

2.1. Modificar /etc/default/hostapd y activar la siguiente línea:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

2.2. Modificar /etc/hostapd/hostapd.conf de la siguiente manera:

#######################################################################
interface=wlan0
driver=nl80211
auth_algs=1
ignore_broadcast_ssid=0
logger_syslog=-1
logger_syslog_level=0
hw_mode=g
ssid=MiWiFi     #(Nombre del Punto de Acceso)
channel=11
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=ClaveMuyDificil  #(Clave de acceso)
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
#######################################################################

2.3. Modificar /etc/dhcp3/dhcpd.conf de la siguiente manera:

#######################################################################
ddns-update-style none;
option domain-name "servidor.org";
option domain-name-servers 192.168.0.1;
authoritative;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.10 192.168.0.20;
  option routers 192.168.0.1;
}
#######################################################################


3. Modificar /etc/network/interfaces con los datos de las TRES redes que tengo:

#######################################################################
# /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
 auto lo
 iface lo inet loopback

########
# WiFi Access Point Internet
  auto wlan0
  iface wlan0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255

  post-up /etc/init.d/hostapd force-reload

########
# Intranet
 auto eth0
 allow-hotplug eth0
 iface eth0 inet static
   address 10.18.5.50
   netmask 255.255.255.0
   network 10.18.5.0
   broadcast 10.18.5.255
   gateway 10.18.5.254

 hostname MiTerminal
 dns-search MiRed.org
 dns-domain MiRed.org
 dns-nameserver 10.18.1.101

########
# Internet
 auto eth1
 allow-hotplug eth1
 iface eth1 inet dhcp

 hostname MiOtroNombreDeTerminal
 dns-nameserver 8.8.8.8
 dns-nameserver 8.8.4.4

########
# Enrutamiento de base

post-up ip route change default via 192.168.2.1 dev eth1
post-up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.18.5.254 dev eth0

########
# Enrutamiento específico  (Éstas son dos máquinas en la red
# corporativa en las que a veces se pone lento el acceso
# si no indico la ruta taxativamente)

post-up route add -host 10.25.1.201 gw 10.18.5.254 dev eth0
post-up route add -host 10.95.1.205 gw 10.18.5.254 dev eth0

#######################################################################

4. Modificar /etc/rc.local con las reglas de IPTables:

#######################################################################
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


# Configuración IPTables
# Eliminar todas las reglas
iptables -F
iptables -t nat -F
iptables -t mangle -F

# Configurar NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE

exit 0
#######################################################################

5. REINICIAR EL SISTEMA
Sí, a lo Winbugs.
Las órdenes "/etc/init.d/xxx restart" o "systemctl restart xxx.service", a veces, NO FUNCIONAN COMO DEBIERAN.


De esta manera, queda todo configurado.
En el equipo que hace de enrutador, deberemos identificarnos a través de un navegador en el portal cautivo ZeroShell para que la conexión se habilite.
Una forma de automatizarlo, es mediante el guión python de
https://code.google.com/archive/p/zeroshell-autologin/downloads

Todo el problema que tuve para lograr el funcionamiento, se debió a lo siguiente, por orden de importancia:

A - El orden de inicio de las interfaces de red.
B - El uso de "restart" en lugar de reiniciar el sistema.

Gracias a todos.

JAP

Responder a