외부에서 집에 있는 git 서버로 접근하게 하는 방법

외부에서 집에 구축한 git 서버 접속하기

저는 개인적으로 git 서버를 운영중입니다. git 서버는 꽤 오랬동안 gitlab 을 사용해오다. 아래 이슈로 인해 gitea로 새로 이전을 하였습니다.

gitea 구축 관련해서는 아래 글을 참고해 주세요.

git 서버를 구축하였는데 사실 git 서버를 집안 내부 네트워크에서만 사용하는 것 보다는 외부의 장소(회사, 카페 등등)에서 접근하여 사용하는게 당연할 것입니다. 집 안에서만 사용한다면 git 서버를 굳이 구축할 필요가 없을 수도 있습니다.

그래서 이번 글에서는 gitea로 구축한 git 서버를 외부에서 접근하도록 설정하는 방법에 대해 설명해 볼까 합니다.

내가 구축한 git 서버를 외부에서 접근하는 원리

대다수의 개인이나 소규모 사업장에서는 “공인 IP” 를 구입하여 사용하는 경우는 흔치 않을 것입니다. 우리가 인터넷을 통해 서버에 접속을 하기 위해서는 반드시 “공인 IP” 가 필요하지만 공인 IP 라는 자원은 한정되어 있고 공인 IP를 비용을 들여 사용하는 것도 개인이나 소규모 사업장에서는 낭비일 수도 있습니다.

데이터 센터가 아니면 일반 개인이나 소규모 사업장에서 공인 IP를 확보할 필요까진 없다 – pixabay

그렇다면 일반 개인이 “서버” 를 운영할 수 없는 것일까요? 전혀 그렇지 않습니다. 우리는 이미 서버를 운영할 수 있는 조건을 갖추고 있습니다. 각 가정마다 사용하는 인터넷 서비스는 통신사에서 할당한 공인 IP를 사용하고 있습니다.

물론 통신사를 통해서 개인에게 할당받은 IP는 공인 IP긴 하지만 상황에 따라 IP 가 바뀌는 “유동적인” 성격을 띄기도 합니다. 그럼에도 가정에서 사용하는 “인터넷 공유기” 를 통해 DDNS 기능을 이용하면 충분히 개인 서버를 운영하는게 가능합니다.

트래픽이 엄청나지 많지 않은 이상 인터넷 공유기와 DDNS 기능을 통해 개인용 서버를 운영하는 것은 거의 문제가 발생하지 않습니다. 이미 수많은 사람들이 자신의 집에 “NAS” 를 이용하여 개인 서버를 운영하고 있는 것은 기정 사실인 셈입니다.

그래서 git 서버의 경우에도 인터넷 공유기와 DDNS 서비스를 이용하면 충분히 개인 서버로 운영할 수 있고 외부에서 접근도 가능해집니다.

공유기 설정하기

먼저 각 가정에는 “인터넷 공유기” 쯤은 사용하고 있을 것입니다. 시중에는 워낙 다양한 제품이 있기 때문에 어떤 공유기가 좋다 나쁘다 할 것은 딱히 없습니다. 사람들이 많이 사용하는 공유기를 사용하면 됩니다.

집에 이미 사용하고 있다면 해당 공유기를 사용하면 됩니다. 만약 공유기를 사용하고 있지 않다면 인터넷 마켓에서 저렴한 공유기를 하나 구입하면 되겠습니다.

ipTIME 유무선공유기, N702E plus티피링크 유무선 와이파이 공유기 TL-WR940N Plus에이수스 유무선 공유기, RT-AC750L

공유기가 준비 혹은 설치가 되었다면 설정 화면으로 접속을 해봅니다.(여기서 초기 설정 방법은 별도로 설명하지 않습니다) 제가 사용하는 공유기는 “티피링크” 의 공유기인데요, 티피링크 공유기의 설정 위주로 설명을 해보도록 하겠습니다.

포워포워딩 설정하기

공유기의 설정 화면에 들어가면 일단 메인 화면이 나오게 됩니다.

여기서 내 git 서버와 외부 포트를 연결하여 열어주는 설정이 필요합니다. 이를 “포트포워딩” 이라고 합니다. 티피링크 공유기의 경우에는 고급 탭에 들어가면 포트포워딩 설정 탭이 있습니다.

티피링크 공유기의 경우에는 “NAT 포워딩” 이라고 되어 있네요, 다른 공유기의 경우에도 비슷한 문구이거나 “포트포워딩” 이라고 되어 있을 것입니다. 해당 설정으로 이동합니다.

제 공유기의 포트포워딩 설정 리스트 입니다. 추가 버튼을 눌러서 gitea 룰을 추가하였습니다. 포트포워딩 룰은 일반적으로 “이름, 내부 포트, 내부 IP, 외부포트, 프로토콜” 순으로 설정할 수 있습니다.

이름은 자신이 기입하고 싶은 룰의 이름을 넣습니다. 내부포트는 git 서버의 내부 포트를 입력해 줍니다. git ea 의 경우에는 3000번을 사용하고 있기 때문에 3000 을 넣었습니다.

내부 IP는 git 서버가 사용하고 있는 내부 IP(Private IP) 입니다. 인터넷 공유기를 사용하면 한개의 공인 IP로 최대 254개의 내부 IP를 사용할 수 있습니다. 이 기술을 “NAT” 라고 합니다.

따라서 git 서버의 내부 IP를 입력해주변 해당 IP의 내부 포트를 외부 포트로 포워딩을 해줄 수 있습니다. 내부 IP 입력 후에 프로토콜은 ALL로 선택 후 실제 외부에서 접근할 수 있는 포트인 “외부포트” 를 지정해 줍니다.

외부포트는 다른 룰과 겹치지 않게 설정해야 하며 본인이 사용하고 싶은 포트를 넣어주면 됩니다. 저는 5000번 포트를 설정하였습니다.

이렇게 설정하고 저장을 하면(공유기에 따라서는 재부팅을 요구하기도 합니다.) 이제 외부에서 해당 git 서버로 접근이 가능해집니다. 외부에서 접근은 “내 공인 IP 주소:(포트번호)” 입니다. 만약 공인 IP가 111.222.121.122 라면 111.222.121.122:3000 으로 접속할 수 있습니다.

공인 IP는 자신의 공유기의 메인 화면에서 확인할 수 있습니다.

제 공유기에서는 이렇게 확인이 가능하네요.

DDNS 기능 설정하기

이 상태로도 외부에서 접근이 충분히 가능하지만 내 인터넷 서비스 단말기가 전원이 껐다 켜지거나 정전이 되거나 하면 공인 IP는 바뀔 가능성이 있습니다. 따라서 고정된 IP가 아니므로 추후에 IP 가 바뀌면 접속이 되질 않습니다.

이런 경우에 대비해서 “DDNS” 라는 기능이 있습니다. DDNS는 특정 도메인으로 내 공인 IP가 바뀌더라도 자동으로 IP를 맵핑시켜 주는 기능입니다. DDNS는 대다수의 공유기가 지원을 하며 티피링크 공유기의 경우에도 DDNS 기능이 있습니다.

그럼 DDNS 기능 설정을 해보도록 하겠습니다.

제조사마다 약간씩은 다르지만 DDNS 기능은 대다수의 공유기에서 지원하는 기능입니다. 티피링크 공유기의 경우에는 고급 – 네트워크 – 동작 DNS 라는 탭에 설정이 가능합니다.

DDNS도 일종의 서비스라고 볼 수 있는데요, 티피링크 공유기는 크게 3가지 서비스를 지원하는데 티피링크 자체에서 운영하는 DDNS 서비스, NO-IP, DynDNS 등을 지원하고 있습니다.

티피링크의 경우에는 자체에서 지원하는 서비스를 사용하는게 편리합니다. 대신에 티피링크의 클라우스 서비스에 가입을 해야 하는데 절차가 간단하여 가입해서 사용하면 편리하게 연동을 할 수 있습니다.

위 링크로 접속하여 티피링크 클라우드에 가입한 후에 이메일로 인증을 하면 가입이 완료됩니다. 그런 다음에 아래와 같이 사용할 도메인을 추가해줍니다.

도메인은 자신이 사용하기 편리한 이름으로 넣어주면 됩니다. 저와 같이 codedosa 같은 형태로 넣으주면 됩니다. 입력을 했으면 “저장” 버튼을 눌러 저장을 합니다.

그럼 좀전에 입력했던 도메인으로 바인딩이 완료되게 됩니다. 이후에는 codedosa.tplinkdns.com 으로 내 git 서버를 외부에서 접근하는게 가능해집니다.

git 서버의 경우에는 포트포워딩으로 5000을 외부 포트로 설정했기 때문에 “codedosa.tplinkdns.com:5000” 으로 접근이 가능해지는 셈입니다.

현재 외부에서 제 git 서버로 접속한 모습입니다. 티피링크에서 제공한 도메인으로 접속이 되는 것을 알 수 있습니다. 공유기 제품으로 유명한 아이피타임의 경우에도 “iptime.org” 도메인으로 DDNS를 제공하고 있습니다.

보안에 주의할것!

이상으로 내가 구축한 git 서버를 외부에서 접근하게 하는 방법에 대해 알아봤습니다. 이렇게 간단히 공유기 설정만으로도 외부에서 접속이 가능한 git 서버 구축이 가능한데요. 대신에 주의해야 할 점이 있습니다.

바로 “보안” 입니다. 일단 제 git 서버는 SSL 인증서를 적용하지 않은 상태입니다. 따라서 외부에 제 데이터의 패킷이 고스란히 노출이 되고 있습니다.

따라서 SSL 인증서를 적용하여 운영하는게 보안을 위해서는 좋습니다. 관련해서는 추후 별도로 글을 작성해 보겠습니다.

또한 내 DDNS 도메인과 계정 아이디, 패스워드 등을 외부에 함부러 노출해도 안되겠습니다. 누군가가 접속하여 악의적으로 git 서버를 망가트릴수도 있기 때문이지요(물론 가능성은 극히 낮지만 배제할 수는 없습니다)

“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”

error: Content is protected !!