저번 글에서 기본 개념을 잡았으니 이젠 실전입니다.
외부 인터넷에서 공유기의 ip주소로 접속하면 라즈베리파이 워드프레스 홈페이지에 접속이 되도록 실제로 포트포워딩을 하겠습니다.
또한 보안상 좋지는 않지만 사용이 훨씬 수월한 포트포워딩 방법의 일종인 DMZ설정에 대해 알아보고 실제로 설정해보겠습니다.
공유기에 관리자로 접속하기
ipTime공유기 설정에 접속을 하기 위해 웹 브라우저를 켠 뒤 주소창에 http://192.168.0.1 을 입력합니다.(다른 공유기를 사용중이시면 주소가 다를 수 있습니다)
그럼 아래 사진과 같은 로그인 화면이 나타납니다.
이전에 한번도 접속한적이 없으시다면 ‘로그인 이름’에 ‘admin’을 넣으시고 ‘암호’에도 ‘admin’을 넣으십시오. 그러면 로그인이 되고 아래와 같은 창이 뜰겁니다.
관리 도구를 누릅시다.
접속 되는 즉시 설정에 가셔서 로그인 이름과 로그인 암호를 다른 것으로 바꾸는걸 강력 추천드립니다. 저대로 두면 아무나 공유기에서 나오는 와이파이를 이용해서 공유기를 마음대로 주무를 수 있게 됩니다.
이름과 암호를 바꾸셨다면, 왼쪽 메뉴의 NAT/라우터 관리 아래에 ‘포트포워드 설정’항목이 있습니다. 클릭해줍니다.
그럼 아래 그림과 같은 메뉴가 나타납니다.
창의 아래쪽을 보시면 규칙이름과 내부 ip주소등 입력할수 있는 칸들이 있습니다. 여기에서 바로 포트포워딩을 설정할 수 있습니다.
포트포워딩에 대해 설명
실제로 포트포워딩을 설정하기 전에, 현재의 네트워크 환경과 포트포워딩에 대해 다시한번 설명드리고 가겠습니다.
외부 인터넷에서 라즈베리파이로 접속하기 위해서는 라즈베리파이의 ip가 아니라 공유기의 ip를 알아야 합니다.
왜냐하면 라즈베리파이의 ip는 바로 위에 있는 공유기가 자체적으로 만들어서 제공한 사설 ip이기 때문이죠.
보통 사설ip의 주소는 192.168.XXX.XXX 식으로 나타납니다.
실제로 라즈베리파이의 ip를 확인해보겠습니다. 좌측 메뉴에서 ‘고급설정’ > ‘네트워크 관리’ > ‘내부 네트워크 설정’ 으로 가면 현재 공유기에 물려있는 장비들의 사설ip주소를 확인할 수 있습니다.
현재 제 공유기에는 5대의 장비가 물려있고 전부 192.168.0.XXX 형태의 ip주소(사설ip)를 가지고 있는걸 볼 수 있습니다. 그림에 한번 나타내보겠습니다.
그렇다면 ipTime의 공유기의 공인ip를 확인해보겠습니다. ‘기본설정’ > ‘시스템 요약 정보’에 들어가면 확인할 수 있습니다.
동그라미쳐진 222.118.139.242 가 바로 외부 인터넷에서 보여지는 라즈베리파이의 공인IP입니다. 실제로 저 주소를 웹브라우저에 입력하면 현재 블로그에 접속이 될 겁니다. 그림에 나타내보겠습니다.
포트 포워딩이라는 것은 공인ip인 222.118.139.242로 접속한 요청을 192.168.0.10같은 내부의 사설ip에 중계해주는 것입니다. 여기에서 한가지 개념이 추가되는데요. ‘포트’의 개념입니다.
지금까지 컴퓨터에 접속할때 ip주소로 접속한다고 말씀드렸는데, 사실은 ip주소의 특정 포트 번호로 접속을 한 것입니다. 포트 번호는 ip나 도메인 주소 끝에 ‘:포트번호’의 형식으로 입력합니다. 예를들자면 http://222.111.100.100:80 처럼 말이죠.
가장 자주 사용하는 웹서버로의 접속은 포트 80번인데, 포트번호를 지정하지 않고 접속하면 기본적으로 80번 포트로 접속하도록 되어 있기 때문에 여러분들은 포트번호를 명시하지 않아도 웹사이트에 잘 접속할 수 있었던 겁니다.
포트 번호는 0에서 65535 까지 사용가능한데, 보통 자주 사용되는 포트번호는 아래와 같습니다.
자주 사용되는 포트 번호
- 20 : FTP(data)
- 21 : FPT(제어)
- 22 : SSH(원격접속)
- 23 : 텔넷
- 53 : DNS
- 80 : http
- 443 : https
- 3389 : 원격 데스크톱 연결
따라서 포트포워딩은 공인 IP로 들어오는 특정 포트에 대한 접속을 사설 IP의 특정 포트로 중계해주는 것입니다. 공인 IP의 포트와 사설 IP의 포트는 동일하지 않아도 됩니다.
예를들자면 공인 IP의 8932포트를 사설 IP의 22포트에 포트포워딩 해 둔다면, 공인IP:8932 로 접속해서 사설 IP의 22번포트에서 제공하는 SSH접속을 할 수 있게 됩니다. 굳이 이런식으로 포트를 꼬아서 연결하는 것은 보안 때문입니다.
만약에 공인 IP의 22번 포트와 사설 IP의 22번 포트를 동일하게 연결해놓는다면, 중국이나 북한의 마음씨 나쁜 해커가 공인IP의 22번 포트를 통해 사설 IP의 22번포트로 연결된 라즈베리파이에 접속을 시도할 수 있습니다.
물론 라즈베리파이에 비밀번호로 잠금을 해 두었다면 조금은 괜찮겠지만, 어쨌든 로그인을 시도할 수 있기 때문에 비밀번호의 수준이 낮다면 해커가 쉽게 뚫을 수 있습니다.
하지만 위의 예처럼 포트를 꼬아서 연결해놓았다면, 해커가 22번포트로 연결을 시도했을 때 연결자체가 이루어지지 않을 겁니다. 공인IP의 22번 포트포워딩 설정을 안해놨으니까요. 이래서 보안에 도움이 되는 겁니다.
하지만 우리는 라즈베리파이를 통해 웹 서비스를 제공해야 하니, 공인IP의 80번 포트와 사설IP의 80번 포트 모두 동일하게 연결해주겠습니다.(아까 말씀드렸다시피 포트번호 없이 주소만 입력하면 80번 포트로 연결하게 되어있습니다)
규칙 이름에는 ‘웹 서버 설정’ 이라고 입력하구요. 내부 IP주소에는 라즈베리파이의 IP주소를 적습니다.(저와 다를수 있으니 확인하시고 입력하세요)
프로토콜은 TCP그대로 두시고 외부 포트를 80, 내부 포트를 80 써주시면 됩니다.
완료하셨다면 ‘적용’버튼을 눌러주세요.
그러면 포트포워드 설정이 적용 된 것입니다.
ipTime공유기를 사용할때 변경사항이 생겼다면 꼭! 꼭! 화면 오른쪽 위의 저장 버튼을 눌러주셔야 적용됩니다. 저 상태는 아직 변경사항이 저장되지 않은 상태입니다. 저장버튼을 누르지 않고 창을 닫게 되면 바꿔놓았던게 하나도 적용되지 않습니다. 저장버튼은 위쪽 메뉴 오른쪽 끝에 있습니다.
나중에 https설정 할 것을 대비해서 미리 443포트도 포트포워딩 해 주는것도 좋습니다. 방금 했던 설정에서 포트 번호만 443으로 바꿔서 ‘적용’버튼 누르면 됩니다. 이때도 마찬가지로 저장버튼 누르는거 잊지 마시기 바랍니다.
저 설정이 완료되었다면 한번 테스트해봅시다.
웹 브라우저를 실행하고 주소창에 공인IP주소를 넣고 접속해봅시다.
워드프레스 설치했을때 봤던 워드프레스 홈페이지가 나온다면 성공한 것입니다.
DMZ설정
간단하게 설명하자면 공인IP로 들어오는 모든 포트를 특정 사설IP의 포트와 연결하는 겁니다. 모든 포트를 개방하는 설정이라고 생각하셔도 됩니다.
이렇게 포트를 연결하면 보안에 취약하지 않을까? 라는 의문점이 생길 수 있습니다. 물론 아무 대책 없이 연결하는것이 아니라 방화벽을 사용하게 되어있는데요. 그림으로 그려서 설명해드리겠습니다.
실제 DMZ(비무장지대)처럼 중간에 침범불가능한 공간을 만들어서 그 앞뒤로 방화벽을 설치합니다. 인터넷의 트래픽은 내부망 보안을 위해서 DMZ까지만 허용되고 반대로 내부방에서도 DMZ까지만 허용됩니다.
DMZ내부에서 별도의 ip를 가지고 데이터 교환작업이 이루어지므로 완전히 포트를 1대1로 연결하는 개념은 아니지만 겉으로 보기에는 그렇게 보일 뿐 입니다.
하지만 DMZ설정이 완벽한 보안을 제공하는 것은 아닙니다. 기본적으로 모든 포트가 연결되게끔 해놓았기 때문에 해커가 공격할 공간은 아주 많은 것이죠.
제 개인적으로는 포트포워딩으로 사용할 포트만 열어놓는 것이 보안에 가장 좋은 방법이지만, 생각보다 알수없는 에러로 인해서 연결이 잘 되지 않는 경우에는 차선책으로 DMZ설정을 사용하는 것을 추천드립니다.
마지막으로 DMZ보다 더 간단하게 연결을 설정할 수 있는 TWIN IP설정에 대해 알려드리겠습니다.
TWIN IP설정
간단히 말씀드리자면 사설IP를 사용하고 있는 컴퓨터중 하나를 지정해서 공인IP주소로 사용하게끔 하는 설정입니다. ipTime공유기에서는 TWIN IP라는 용어를 쓰지만 다른 공유기에서는 SDMZ(SuperDMZ)라고 불리기도 합니다.
TWIN IP설정과 DMZ설정은 공유기 아래에 서버로 돌리는 컴퓨터가 하나일 경우에만 추천되는 설정입니다.
공유기 아래에 서버가 2개 이상 있는 경우에는 포트포워딩 설정을 각각 해줘서 포트당 어떤 컴퓨터의 어떤 포트로 연결해줄지 설정을 해줘야 합니다.
보통 집안에서 서버를 2개 이상 굴리는 경우는 드물 것이니까, 간단하게 설정하고 싶으시다면 TWIN IP설정을 해두시면 공인IP로 접속했을때 바로 지정된 사설IP의 컴퓨터로 접속하게 됩니다.
DMZ와 TWIN IP의 차이점을 설명드리겠습니다.
DMZ는 공인IP로 접속하는 모든 포트를 특정 사설IP로 개방하는 것이므로, 내부망에서 라즈베리파이는 192.168.XXX.XXX같은 사설IP를 가지고 있게 됩니다. 내부망에서 ssh나 xrdp이용한 원격접속을 실행할때에는 위의 192.168.XXX.XXX의 IP주소를 사용해야 합니다.
하지만 TWIN IP는 아예 라즈베리파이에 공인IP를 할당하는 개념이라서, 내부망에서도 공인IP의 주소를 통해 원격접속을 할 수 있습니다.
언뜻 보기에는 굳이 DMZ보다는 TWIN IP설정을 하는게 더 깔끔해 보일수도 있지만, 단점이 존재합니다.
TWIN IP설정은 소프트웨어적인 처리가 한번 더 들어가야 해서 공유기의 리소스를 사용하기 때문에(궁금하시다면 소프트웨어 NAT(Network Address Translation)기능에 대해 알아보십시오) 100mbps급보다 높은 인터넷망을 이용중이시라면 최대 속도를 사용할 수 없다는게 단점입니다.
제가 추천드리는 방법은
- 포트포워딩을 통해 연결을 설정한다.
- 포트포워딩이 안되면 DMZ설정을 통해 연결을 설정한다.
- DMZ도 안되면 TWIN IP를 통해 연결을 설정한다.
입니다.
이렇게 해서도 외부망에서 라즈베리파이의 워드프레스 홈페이지에 접속되지 않는다면, 맨 처음 글의 ‘홈 네트워크 구축’에 관한 글을 보고 공유기의 위치를 재확인 하시기 바랍니다.(특히 공유기 아래에 공유기를 설치해놓고 접속이 안된다고 하실수도 있습니다. 사실 제가 그랬거든요)
다음 글에서는 도메인 구매에 대해 알려드리겠습니다.
주말에 새 글 기다렸어요!
매주 좋은 글 감사합니당. 즐거운 주말되세요😀
감사합니당~ 행복하세요
이번에 라즈베리파이를 이용해 블로그를 만든 대학생입니다. 꿈이 이쪽이라 열심히 공부하고 있습니다.
지금까지 올려주신 글들 보면서 정말 많은 도움이 됐습니다. 정말 감사합니다!
제가 마지막에 막힌 부분이 https 설정을 하는 것인데 그 부분까지 올려주신다면 제게 정말 큰 도움이 될거 같습니다.
이런 정보들 공유해주신거에 다시 감사드립니다.
빠른시일내에 https연결하는법 포스팅하겠습니다
댓글달아주셔서 감사합니다!
앗 감사합니다ㅠㅠㅠ 저도 열심히 챙겨보겠습니다!
대학생 분이 이렇게 열성적이라니…!! 멋집니다!!
저도 많이 배우겠습니다 따봉!
데브보노님 글 항상 잘 보고있습니다 ㅎ
읽어주셔서 감사합니다!! 행복하세요