홈 네트워크에 있는지 여부에 따라 다른 저장소 URL에 연결

홈 네트워크에 있는지 여부에 따라 다른 저장소 URL에 연결

내 노트북에 Subversion 작업 복사본이 있고 NAS에 해당 저장소가 있습니다. 집에 없을 때 나는 외부 IP로 확인되는 도메인 이름에 대한 암호화된 연결을 통해 인터넷을 통해 업데이트하고 커밋합니다. 집에 있고 홈 네트워크를 통해 연결되어 있을 때 내부(홈 네트워크) IP에 대한 암호화되지 않은 연결을 통해 업데이트하고 커밋하고 싶습니다.

집에 있을 때는 암호화나 외부 IP 주소를 사용하지 않는 것을 선호합니다. 두 가지 모두 연결 속도가 느려지기 때문입니다(암호화 및 내부 IP 사용 시 10MB/초, 암호화 및 내부 IP 사용 시 1MB/초, 0.5MB/초). 암호화 여부와 외부 IP 포함).

홈 네트워크에 연결되어 있는지 여부에 따라 작업 복사본이 다른 URL을 참조하도록 할 수 있는 방법이 있습니까? 아니면 속도 문제를 해결하는 다른 방법이 있습니까?

답변1

일부 옵션:

  • SSH( )를 통한 경우 에는 호스트의 별칭을 지정하도록 svn+ssh://...편집할 수 있습니다 . .ssh/config그런 다음 별칭이 올바른 호스트 이름을 가리키도록 네트워크 변경 시 이 구성 파일을 편집하는 스크립트를 작성할 수 있습니다.
  • 그렇지 않은 경우 http컴퓨터가 있는 네트워크에 따라 올바른 도메인 이름의 IP로 구성할 수 있는 특수 도메인 이름을 확인하는 로컬 DNS 서버를 실행할 수 있습니다.
  • (아마도 이전 것보다 덜 미쳤을 것입니다.) 로컬 컴퓨터의 일부 포트에서 TCP 릴레이를 실행하고 현재 사용 중인 네트워크에 따라 두 서버 중 하나를 가리키도록 합니다. 예를 들어, 네트워크 1에 있을 때, 네트워크 2에 있을 때 바인딩하여 localhost:8080전달되도록 할 수 있습니다 . 그런 다음 해당 주소( )에서 체크아웃을 수행해야 할 수 있습니다 .myserver:80publicserver:80svn checkout http://localhost:8080/...

단지 임의의 아이디어일 뿐이지만 모두 해결 방법처럼 느껴집니다. 어쩌면 더 쉬운 방법이 있을 수도 있습니다.

또는 원하는 원격 장치( git push -u someremote branchname, someremote서버 중 하나를 나타냄)로 푸시할 수 있는 git과 같은 분산 버전 제어 시스템으로 전환할 수도 있습니다.

답변2

어제 비슷한 문제를 해결했기 때문에 LAN에 있는지 또는 집 밖에 있는지에 따라 다른 리모컨을 사용할 필요 없이 랩톱의 git repos를 데스크톱 컴퓨터의 리모컨과 동기화할 수 있습니다.

dnsmasq다음 구성을 사용하여 데스크탑에서 실행했습니다 .

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

/etc/extra_hostsLAN에 있는 내 데스크톱의 IP와 내 외부 IP로 확인되는 도메인 이름이 포함된 단일 항목이 포함되어 있습니다.

192.168.0.72 jwakely.example.com

그런 다음 내 노트북에서 LAN Wi-Fi 연결에 대한 NetworkManager 구성을 "DHCP 주소만"으로 편집하고 192.168.0.72를 기본 DNS 서버로 설정하고 내 라우터를 보조 서버로 설정합니다(NetworkManager GUI 없이 이를 수행하려면 DNS1과 DNS2를 설정하고 PEERDNS=no, 또는 네임서버를 수동으로 입력 /etc/resolv.conf)

데스크탑의 방화벽을 통해 DNS 쿼리(포트 53)를 허용한다는 것을 기억하고 나니 완벽하게 작동했습니다.

집 LAN에 있을 때 노트북은 DNS 쿼리를 위해 데스크탑을 사용하므로 에 대한 내부 IP를 얻고 jwakely.example.com다른 모든 DNS 쿼리는 데스크탑의 일반 DNS 서버(내 ADSL 라우터임)로 전달됩니다. 노트북만 인스턴스를 사용하더라도 dnsmasqLAN의 다른 모든 호스트는 여전히 정상적으로 DNS용 라우터를 사용합니다. 내 랩톱이 LAN에 있지만 데스크톱이 실행되고 있지 않은 경우 랩톱은 보조 DNS 서버를 사용하고 내부 IP를 가져올 수 없지만 jwakely.example.com어쨌든 컴퓨터가 실행되고 있지 않기 때문에 괜찮습니다.

답변3

나는 당신이 Subversion의 명령에 대해 알고 있기를 바랍니다 relocate. 손으로 사용할 수 있습니다. 내부 및 외부 액세스에 호스트 이름을 사용하여 각각 한 위치에서 하나만 해결하는 경우 모든 저장소 관련 작업에서 svn 오류가 발생하여 재배치하도록 알림

또 다른 (더러운) 아이디어는 보안을 위해 외부 네트워크에서 VPN 연결을 사용하는 것입니다.입장서버로 이동하여 사용일반적인 불안저장소 액세스를 위한 프로토콜 - 홈 넷에서는 VPN 링크를 연결하지 않습니다. 이 방식의 장점은 단일 URL, 요청 시 보안, 오류 방지 단순성입니다.

관련 정보