5 votos

Creando una conexión de red puente en Terminal

De acuerdo, estoy luchando un poco aquí. No soy muy bueno con Terminal y solucionar problemas de red usando, pero hasta ahora me las he arreglado.

Sin usar el Compartir Internet (porque controlarlo a través de Terminal según mi pregunta aquí parece que realmente no funciona en Yosemite), ¿cómo puedo compartir mi conexión a Internet desde una interfaz (digamos en0) a otra (de nuevo, digamos en1)?

Entiendo que el Compartir Internet crea un puente (generalmente llamado bridge100) y luego utiliza bootpd (creo) para establecer un servidor DHCP y NAT para enrutar todo el tráfico desde 192.168.2.xxx (que es la red puenteada) a través de su red principal.

¿Cómo puedo lograr el mismo resultado sin usar el panel de preferencias Compartir?

3voto

klanomath Puntos 19587

Aquí hay una solución interesante para compartir internet con un puente de capa-2 pero sin utilizar NAT/DHCP (no requerido)/Panel de Preferencias de Compartir Internet:

Cree un script de shell ethernet-bridge.sh en /usr/local/sbin con el siguiente contenido:

#! /bin/sh
# ######################################
#  codificado por Nat!
#  2013 Mulle kybernetiK
#  GPL

comando=${1:-start}
shift
proxyarp=${1:-no}
shift

start()
{
        sysctl -w net.inet.ip.forwarding=1
        sysctl -w net.inet.ip.fw.enable=1
        if [ "$proxyarp" != "no" ]
        then
                sysctl -w net.link.ether.inet.proxyall=1
        fi

        ifconfig bridge0 create
        ifconfig bridge0 addm en0
        ifconfig bridge0 addm en1
        ifconfig bridge0 up
        if [ $? -eq 0 ]
        then
                syslog -s "El Puente Ethernet está activo"
        else
                syslog -s "Fallo del Puente Ethernet"
        fi
}

stop()
{
        ifconfig bridge0 destroy

        sysctl -w net.inet.ip.forwarding=0
        sysctl -w net.inet.ip.fw.enable=0
        sysctl -w net.link.ether.inet.proxyall=0

        syslog -s "El Puente Ethernet está desactivado"
}

case "$comando" in
        start*) start
                ;;

        stop*)  stop
                ;;
esac

y hágalo ejecutable:

chmod 755 /usr/local/sbin/ethernet-bridge.sh

Luego coloque el siguiente XML en /Library/LaunchDaemons como com.ethernet-bridge.plist

        Etiqueta
        com.ethernet-bridge.plist
        ArgumentosDelPrograma

            /usr/local/sbin/ethernet-bridge.sh

        NombreDeUsuario
        root
        NombreDeGrupo
        wheel
        EjecutarAlCargar
        
        EjecutarSoloUnaVez
           
    

Luego modifique el archivo y cárguelo:

sudo chmod 644 /Library/LaunchDaemons/com.ethernet-bridge.plist
sudo chown root:wheel /Library/LaunchDaemons/com.ethernet-bridge.plist
sudo launchctl load /Library/LaunchDaemons/com.ethernet-bridge.plist

El plist habilitará el modo puente durante el arranque.

Verifique con ifconfig -a si el puente es visible.

Para detener el modo puente, simplemente entre:

sudo /usr/local/sbin/ethernet-bridge.sh stop

Para reiniciar el modo puente, simplemente entre:

sudo /usr/local/sbin/ethernet-bridge.sh start

Ahora configure los clientes con una IP/máscara de red/Puerta de enlace fijas (la dirección IP interna de la máquina puente)/DNS o configure adecuadamente un servidor DHCP en la máquina puente.

Adicionalmente, debe configurar una ruta estática en su enrutador a la red a la que proporciona Compartir Internet (en su ejemplo (en1)).

Hasta ahora, los mensajes de syslog no funcionan, intentaré mejorar el script pertinente.


Se describe un enfoque similar aquí, pero no logré que funcionara en Yosemite

0 votos

¡Esto es genial, gracias! :) Descubrí la parte del puente rascándome la cabeza sobre man ifconfig durante un tiempo, pero la parte de sysctl habría estado más allá de mí. Ahora solo hay que averiguar cómo configurar Airport en modo AP. :P Pero eso es para otra pregunta ...

0voto

Tetsujin Puntos 23061

Lo hago simplemente configurando en el panel de control de mi red...

El lado 'entrante' (Ethernet 1) como automático, DHCP (para que recoja la información que necesite directamente de mi proveedor de servicios de internet) y el lado 'compartido' saliente (Ethernet 2) como completamente manual (basado en lo que las otras máquinas conectadas a la red esperarían ver de mi puerta de enlace dedicada), dirección IP 192.168.0.1 subred 255.255.255.0 router en blanco, DNS lo configuro con la dirección DNS regular de mi proveedor de servicios de internet.

Funciona perfectamente, si tengo que dejar mi puerta de enlace inactiva por algún tiempo.

Por cierto, el router de mi proveedor de servicios de internet siempre está configurado en modo 'solo módem', así que no hay conflictos con él.

No tengo ni idea de cómo hacer eso en la terminal, por cierto - lo único que hago es cambiar mi "Ubicación" guardada de "Mac como Cliente" a "Mac como Servidor" y aplicar los cambios.

0 votos

Estoy buscando usarlo como parte de un script, por lo que realmente necesita ser trabajo en la terminal. Pero gracias :)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X