![Conéctese a una URL de repositorio diferente dependiendo de si está en la red doméstica o no](https://rvso.com/image/1303081/Con%C3%A9ctese%20a%20una%20URL%20de%20repositorio%20diferente%20dependiendo%20de%20si%20est%C3%A1%20en%20la%20red%20dom%C3%A9stica%20o%20no.png)
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/config
para 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
http
o 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:8080
y reenviarlomyserver:80
cuando esté en la red 1,publicserver:80
cuando 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 someremote
se 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é dnsmasq
en mi escritorio, con esta configuración:
domain-needed
bogus-priv
no-poll
local=/localdomain/
addn-hosts=/etc/extra_hosts
/etc/extra_hosts
contiene 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.conf
manualmente)
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.com
y 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 dnsmasq
instancia, 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.com
pero está bien porque la máquina no está funcionando de todos modos.
Respuesta3
Espero que conozcas el relocate
comando 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.