Conéctese a una URL de repositorio diferente dependiendo de si está en la red doméstica o no

Conéctese a una URL de repositorio diferente dependiendo de si está en la red doméstica o no

Tengo una copia de trabajo de Subversion en mi computadora portátil y el repositorio correspondiente en mi NAS. Cuando estoy fuera de casa, actualizo y comprometo a través de Internet a través de una conexión cifrada a un nombre de dominio que se resuelve en mi IP externa. Cuando estoy en casa y conectado a través de mi red doméstica, me gustaría actualizar y confirmar a través de una conexión no cifrada a mi IP interna (red doméstica).

Preferiría no usar cifrado ni mi dirección IP externa cuando estoy en casa, porque ambos ralentizan la velocidad de conexión (10 MB/s sin cifrado y con IP interna, 1 MB/s con cifrado e IP interna y 0,5 MB/s). s con o sin cifrado y con IP externa).

¿Hay alguna manera de permitir que mi copia de trabajo haga referencia a una URL diferente dependiendo de si estoy o no conectado a mi red doméstica? ¿O hay otra forma de solucionar el problema de la velocidad?

Respuesta1

Algunas opciones:

  • Si esto es a través de ssh ( svn+ssh://...), puede editarlo .ssh/configpara especificar alias para los hosts. Luego, podría escribir un script que edite este archivo de configuración en el cambio de red para que el alias apunte al nombre de host correcto.
  • Si no es así (a través de httpo algo así), puede ejecutar un servidor DNS local que resuelva un nombre de dominio especial que puede crear con la IP del nombre de dominio correcto dependiendo de en qué red se encuentre la computadora.
  • (Probablemente menos loco que el anterior) Ejecute una retransmisión TCP en su computadora local en algún puerto y haga que apunte a cualquiera de los servidores dependiendo de la red en la que se encuentre. Por ejemplo, puede vincularlo localhost:8080y reenviarlo myserver:80cuando esté en la red 1, publicserver:80cuando esté en la red 2. Entonces podría necesitar realizar un pago desde esa dirección ( svn checkout http://localhost:8080/...).

Solo algunas ideas aleatorias, aunque todas parecen soluciones alternativas. Quizás haya una manera más fácil.

O tal vez quieras cambiar a un sistema de control de versiones distribuido como git, que te permitirá enviar al control remoto que desees ( git push -u someremote branchname, donde someremotese refiere a uno de los servidores).

Respuesta2

Ayer resolví un problema similar, por lo que los repositorios de git en mi computadora portátil se pueden sincronizar con un control remoto en mi computadora de escritorio, sin tener que usar un control remoto diferente dependiendo de si estoy en la LAN o fuera de casa.

Ejecuté dnsmasqen mi escritorio, con esta configuración:

domain-needed
bogus-priv
no-poll
local=/localdomain/
addn-hosts=/etc/extra_hosts

/etc/extra_hostscontiene una única entrada con la IP de mi escritorio en la LAN y el nombre de dominio que se resuelve en mi IP externa, por ejemplo

192.168.0.72 jwakely.example.com

Luego, en mi computadora portátil, edite la configuración de NetworkManager para mi conexión wifi LAN a "Solo direcciones DHCP" y configure 192.168.0.72 como servidor DNS principal y mi enrutador como secundario (para hacerlo sin la GUI de NetworkManager, simplemente configure DNS1 y DNS2 y PEERDNS=no, o coloque los servidores de nombres /etc/resolv.confmanualmente)

Funcionó perfectamente una vez que recordé permitir consultas DNS (puerto 53) a través del firewall de mi escritorio.

Cuando estoy en la LAN de mi casa, la computadora portátil usa la computadora de escritorio para consultas de DNS, por lo que obtiene la IP interna jwakely.example.comy todas las demás consultas de DNS se reenvían al servidor DNS habitual de mi computadora de escritorio (que resulta ser mi enrutador ADSL). Solo la computadora portátil usa la dnsmasqinstancia, todos los demás hosts en la LAN todavía usan el enrutador para DNS como de costumbre. Si mi computadora portátil está en la LAN pero mi computadora de escritorio no está funcionando, entonces la computadora portátil usa su servidor DNS secundario y no puede obtener la IP interna, jwakely.example.compero está bien porque la máquina no está funcionando de todos modos.

Respuesta3

Espero que conozcas el relocatecomando de Subversion. Puedes usarlo a mano. Si va a utilizar nombres de host para acceso interno y externo, que resuelven solo uno en una ubicación respectivamente, el error svn en cualquier operación relacionada con el repositorio le recuerda que debe reubicarse.

Otra idea (sucia) es utilizar una conexión VPN en redes externas para protegeraccesoal servidor y usoinseguro comúnprotocolo para acceso al repositorio: en la red doméstica simplemente no activa el enlace VPN. Las ventajas de este método son: URL única, seguridad bajo demanda, simplicidad a prueba de errores.

información relacionada