Creando una conexión de red puenteada en el terminal

3

Está bien, estoy luchando un poco aquí. No soy tan bueno con la Terminal y resolviendo los problemas de red al usarla, pero hasta ahora he logrado eliminarlos.

Sin usar Internet Sharing (porque lo controla a través de Terminal según mi pregunta aquí en realidad no parece funcionar en Yosemite) ¿Cómo puedo compartir mi conexión a Internet de una interfaz (digamos en0 ) a otra (nuevamente, digamos en1 )?

Entiendo que Internet Sharing crea un puente (generalmente llamado bridge100 ) y luego usa 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 primaria.

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

    
pregunta Stuart H 28.03.2015 - 15:02

2 respuestas

2

Aquí es una solución interesante para compartir Internet con un puente de capa 2 pero sin usar NAT / DHCP (no es necesario) / Panel de preferencias para compartir Internet en absoluto:

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

#! /bin/sh
# ######################################
#  coded by Nat!
#  2013 Mulle kybernetiK
#  GPL

command=${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 "Ethernet Bridge is up"
        else
                syslog -s "Ethernet Bridge failure"
        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 "Ethernet Bridge is down"
}



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

        stop*)  stop
                ;;
esac

y hazlo ejecutable:

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

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.ethernet-bridge.plist</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/sbin/ethernet-bridge.sh</string>
        </array>
        <key>UserName</key>
        <string>root</string>
        <key>GroupName</key>
        <string>wheel</string>
        <key>RunAtLoad</key>
        <true/>
        <key>LaunchOnlyOnce</key>
        <true/>   
    </dict>
</plist>

Luego modifica el archivo y cárgalo:

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 de puente durante el arranque.

Verifique con ifconfig -a si el puente está visible.

Para detener el modo puente, simplemente ingrese:

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

Para reiniciar el modo de puente, simplemente ingrese:

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

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

Además, tiene que configurar una ruta estática en su enrutador a la red a la que proporciona Conexión compartida a Internet (en su ejemplo (en1)).

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

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

    
respondido por el klanomath 29.03.2015 - 00:28
0

Lo hago simplemente configurando en mi panel de control de Red ...

El lado 'entrante' (Ethernet 1) como automático, DHCP (para que recoja cualquier información que necesite directamente de mi ISP) & el lado 'compartido' saliente (Ethernet 2) como manual completo (basado en lo que las otras máquinas conectadas a la red esperarán ver normalmente desde mi puerta de enlace dedicada), dirección IP 192.168.0.1 subred 255.255.255.0 enrutador en blanco, DNS configurado en mi ISP dirección DNS regular.

Funciona bien, si tengo que bajar mi puerta de enlace por un período de tiempo prolongado.

Mi enrutador ISP, por cierto, siempre está configurado en modo 'solo un módem', por lo que no estoy luchando contra él.

No tengo ni idea de cómo hacerlo en el terminal, por cierto, todo lo que hago es cambiar mi "Ubicación" guardada de "Mac como cliente" a "Mac como servidor" & pulsa Aplicar.

    
respondido por el Tetsujin 28.03.2015 - 15:18

Lea otras preguntas en las etiquetas