WEB2 - Home Server (2)PORT FORWARDING, DHCP
===
@5.port
지금까지 공유기란 무엇인가, IP라는 것들은 서로 어떤 관계에 있는가를 봄
그리고 저 사람 그림(192.168.0.4)이 : 이용하는 컴퓨터를 '클라이언트'로 본 것
왼쪽 화살표처럼 '서버'로 사용하고 싶은 경우에는??
= 바깥에 있는 다른 불특정한 사람이 접속을 해서 192.168.0.4 컴퓨터에 도달하려면??
지금 상태론 할 수 없다 : 59.6.66.238이라고 하는 저 IP address로 접속을 해봤자 공유기 입장에서는 192.168.0.2~4 중 누구를 원하는지 알 수 없어
접속이 들어왔을 때 누가 서버로서 응답하게 할 것인가 라는 걸 공유기가 교환 연결 해줄 수 있도록 하는 방법을 살펴볼 것
그러려면 PORT FORWARDING 이라는 기술을 써야함
근데 그러려면 PORT라는 굉장히 중요한 개념을 알아야
배들은 항구(PORT)에 정박해 있다.
배들은 무질서하게 정박해 있지 않다.
각자 자신의 번호를 갖고 있고, 그 번호에 해당되는 PORT에 정박해있다.
컴퓨터에도 PORT라는 개념이 있다.
생각해보면, 하나의 컴퓨터에는 웹서버가 여러개 설치될 수가 있다. 웹서버가 아니라, 우리가 배운적은 없어도 아무튼 여러가지 서버가 있을 수 있다. 게임서버, 채팅서버, FTP서버, 미디어서버..
우리가 어떤 특정 컴퓨터에 접속했을 때, 그 컴퓨터에는 여러 서버가 있는데 그 서버들을 어떻게 식별?
우리가 많은 서버들 중에 누구랑 상호작용할건지 컴퓨터에게 알려줘야한다
그때 사용하는게 PORT번호
65535개의 구멍을 뚫어놨다고 생각해주기
0번부터 순서대로 숫자가 메겨져있다(물리적인 건 아님)
65535까지 있다. 더 많진 않음
80번 포트는 http, 웹페이지를 주고 받을 때 사용하는 통신규약
즉, 웹은 http라는 프로토콜을 이용하고 있는 통신시스템
80번은 웹이 쓰도록 정해져 있음 왜냐? 웹은 중요하니까
0번부터 1023번 까지의 포트는 well-known, 예약된 포트, 맘대로 쓰면 안됨(써도되는데 막혀있음, 문제가 생길 수 있음)
여러분이 여러분의 컴퓨터에다 웹서버를 깔면 그 웹서버는 기본적으로 80번 서버에 연결되도록 약속돼 있음
연결돼있단 말을 구체적으론 listening 듣다라는 표현을 씀
왜냐면 서버는 기본적으로 듣고있다가 요청이 들어오면 응답하는 기계. 리스닝한다는 표현을 씀
경우에 따라선 서버를 두대를 깔고 싶을 수도 있다.
한대를 더 깔려고 하면 이미 80번 포트를 웹서버가 쓰고 있기 때문에 80번에다 못 깜
이미 저 포트를 쓰고 있다고 에러가 뜸
그럼 다른 포트를 쓰면 됨 예를 들어 8080, 80이랑 8080이랑 비슷, 관습적으로 웹서버를 80번 포트에다 설치하지 못하는 경우엔 8000이나 8080포트에 많이 설치함. 아무데나 해도 되지만 관습적인 것
이런식으로 웹서버 두개를 한대의 컴퓨터안에 깔 수 있다.
SSH라고 하는 서버를 깔면 22
내가 어떤 목적으로 웹서버와 비슷한 서버를 만들었다면
well-known port에 들어가려면 많이 성공해야됨 자기가 만든 서버가 well-known port에 들어갔다 대박난거죠
그렇지 않으면 1023~65535 안에 아무거나 비어있는데다가 listening을 시키면 됨
웹서버가 두개가 깔려있는 상황에서 누구와 상호작용을 할 것인지는 URL에 비밀이 있다.
http://open~~ 에 접속하면 걔는 80 포트에 접속이 됨
http라고 앞에 적혀있으니까
이 주소에 해당되는 컴퓨터에 http로 통신하겠다!
컴퓨터들은 결과론적으로 이 접속을 80번 포트에 연결시켜줌.
만약 8080에 있는 웹서버를 호출하고 싶다면 주소를 ~~:8080 이라고 적어주면 됨
자신이 사용하고 있는 검색엔진에서 URL format이라고 검색해보면 URL이 어떤 형식으로 돼 있는지에 대해 볼 수 있다.
URL은 제일 앞 scheme : 통신규약, http, FTP, mailto? 이런식으로
host : 주소, IP나 도메인 네임이 들어옴.
그 뒤에 :port : 포트번호를 여기에 입력
이제 실험!
위쪽 디렉토리는 80번 포트에 설치한 웹서버의 documents root, 그 안에 index.html파일 --오 이런식이군 서버와 디렉토리
밑에 htdocs는 8080포트를 리스닝하고 있는 웹서버의 documents root, 그 안에 index.html파일
80이라고 돼 있는 부분은 사라짐
생략 가능하기 때문에 없애버린 것
즉 하나의 컴퓨터 안에 서로 다른 서버가 설치돼 있고 port에 따라서 우리 컴퓨터가 다른 서버를 우리에게 제공해줌
할 수 있는 일이 많아졌다!
하나의 컴퓨터에 여러대의 서버를 설치하는 것부터 시작해서 port forwarding이라는 걸 통해서 공유기 안쪽에 은밀하게 은둔하고 있었던 우리의 컴퓨터를 public한 서버로 운영하는 것도 가능
===
@6.port forwarding
forwarding :
- 1.명사 추진, 촉진
- 2.명사 발송, 운송, 회송
이미 많은 개념들을 알고 계시기 때문에 살짝만 알려드리면 바로 이해할 수 있습니다.
공유기의 public IP address : 59.6.66.238
192.168.0.4 에 웹서버를 설치했다고 치면
사람들한테 저 서버에 접속하게 하기 위해서는 192.168.0.4를 알려주면 되나요? 안되죠
59.6.66.238를 알려주는데 접속하는 사용자들이 59.6.66.238로 접속했을 때 192.168.0.4로 접속하게 하면 된다
port라는 것을 이용한다
공유기에다가 포트포워딩 설정을 하는 것! : 59.6.66.238:8080, 59.6.66.238:8081 이렇게 들어오면 각자 다른곳으로 가게 설정하면 된다
우리의 공유기의 공인아이피에 8081로 누군가가 접속이 들어오면
그 접속은 내부네트워크에 있는 192.168.0.4:80 로 보내버린다.
공유기가 보낸다
또 설정을 한 것 8080포트로 들어온것은 192.168.0.3:80로
라우터가 안내자 역할을 한다
안내자 역할을 할 수 있기 위해선 라우터의 설정을 바꿔주면 된다
생코 UI에선
NAT / 라우터 관리
> 포트포워드 설정 (다 비슷할 겁니다)
규칙이름, 내부 IP주소, 외부 포트, 내부 포트 건드림
공인아이피의 8081(▽외부포트)로 들어오면 내부 포트는 80(그 서버도 포트가 여러개일테니까)으로 하겠다
적용 누르면 이런게 생김
퍼블릭 8081(외부포트)로 들어오면 192.168.0.4에 해당하는 컴퓨터의(내부 IP)의 80포트(내부 포트)로 들어온다는 말
우리가 사용하고 있는 이 시스템의 아이피를 알아봐야죠
myip를 검색해서 알아본 뒤 브라우저에 그 아이피를 입력 == 공유기의 IP
59.6.66.238가 나왔음. 그래서 59.6.66.238:8081 로 접속하면?
다른컴퓨터나 스마트폰을 켜서
같은 네트워크에 있건 없건 상관없다
퍼블릭 IP의 8081포트로 들어와봐 잘 나오면 성공
그 주소를 친구들한테 보내면 친구들이 들어와서 여러분의 웹사이트를 볼 수 있다.
(자신의 IP를 공개하는 건 대단히 위험할 수 있는 일)
웹서버를 직접 운영하는 것도 좋지만 웹서버가 자신의 컴퓨터에서 돌아간다면
그 컴퓨터가 털릴 수 있는 여지가 있을 수 있다.
우리 수업은 보안까지 챙겨드리진 못함. 생각해서 IP를 알릴 것을 결정
또 HTTP는 default port가 80이니까
이렇게 설정하면
59.6.66.238:80이라고 치고 엔터치면 80이 사라짐
라우터로 들어온 port번호가 무엇이냐에 따라서 내부네트워크에 있는 특정한 머신에 특정 port로 요청을 forwarding할 수 있다 라는 것
port forwarding은 이거말고도 아주 여러가지 맥락의 다양한 분야에서 사용되고 있는 테크닉임
===
@7.Dynamic & Static IP address
인류가 부족한 IP를 효율적으로 사용하기 위해서 도입한 여러 방법중 또 하나의 방법 Dynamic IP Address
한국에선 유동 IP라고 부름
우리가 집에서 인터넷을 쓰기 위해선 ISP(Internet Service Provider) == 통신사와 계약을 맺어서
집에다 케이블을 꽂으면
여러분의 컴퓨터에는 IP Adress가 탁 달라붙음
여러분이 컴퓨터에다 웹서버와 같은 서버를 깔고 누군가에게 IP주소를 알려주는거죠
그 사람은 웹브라우저와 같은 클라이언트에 IP주소를 입력하고 엔터를 치면
그 IP에 해당되는 컴퓨터를 찾아가겠죠
그럼 우리집 컴퓨터에 요청이 들어오고 그 요청에 대해서 응답할 수 있다.
아주 nice한 상황
근데 문제는 뭐냐면
모든 집집마다 IP를 하나씩 주다보면 IP Adress가 턱없이 부족하다
그래서 유동 IP라는걸 쓴다
여러분에게 주어진 IP가 계속해서 바뀜 == 돌려막기
내가 여행을 가서 집을 오랫동안 비워두면 ISP가 여러분의 IP주소를 회수함
그리고 새로 컴퓨터를 킨, 또는 새로운 가입자에게 여러분이 쓰던 IP를 줌
그리고 여러분이 한달 정도 후에 다시 컴퓨터를 키면, 여러분 집에 있는 공유기를 키면
그때 ISP가 어 이사람 다시 인터넷을 쓰려고 하네 라는 것을 알고 여러분에게 새로운 IP를 부여함
그럼 내 입장에선 IP가 자꾸만 바뀌는 것, 동적으로(Dynamic)
동적dynamic, 動的
정적static, 靜的
통신사들은 가입자들이 수백만에서 수천만일텐데 그 많은 사람들이 동시에 인터넷을 다 쓰지 않기 때문에 안쓰는 사람의 것을 회수해서 쓰기 시작한 사람을 빌려주고 회수하고 빌려주고...
이렇게 IP를 임대하면서 많은 가입자들에게 IP를 제공할 수 있게 됨
문제는 웹서버와 같은 서버를 깔아놨다면 내가 알려줬던 IP는 59.6.66.238인데 다시 접속을 시도하면
내가 옛날에 사용하던 IP주소로 접속을 하게 됨
이런 문제가 생길 수 있다. Dynamic IP Address의 단점
dynamic이 있다면 static이 있겠지?여러분의 컴퓨터의 IP를 고정시켜버리는 것
통신사한테 2~3만원을 더 주면 통신사가 여러분한테 딱 고정된 IP를 준다.
즉 IP를 독점적으로 사용하는 데 들어가는 비용이 2~3만원 되는것. 필요하시면 참고하세요
===
@8.DHCP (1/2)
이번시간은 자신의 IP Adress를 변경하는 방법을 보면서
이게 얼마나 까다로운 건지와
그게 어떻게 자동으로 설정되는지 살펴볼 것
그 와중에 나오는 개념 Dynamic Host Configuration Protocol(통신규칙) 도 보고
시작
컴퓨터를 하나 새로 산 상태. 그럼 그 컴퓨터를 공유기에 연결함.
컴퓨터에서 인터넷을 쓰기 위해선 원래는 저 컴퓨터의 IP Adress를 내가 직접 지정해야함
같은 네트워크 상에서(같은 범위 안에서) 중복되지 않게 해야하고
윈도우 컴퓨터 기준으로 살짝 살펴봄
제어판 > 네트워크&인터넷 > 네트워크&공유센터 > Connection의 해당 클릭 > 속성(properties)
저거 선택하고 Properties누르기
기본적으로는 자동으로 돼 있다.
Use the~ 로 내가 직접 입력하는 부분이 나옴.
Subnet mask는 뭐야? 안배웠어 = 지식이 필요해 = 어려워
DNS는 뭐야? 안배웠어 = 지식이 필요해 = 어려워
이런 식으로 귀찮거나 지식이 필요한 작업들을 해야한다.
이렇게 직접 설정하지 않고 자동으로 설정하는 DHCP라는 것에 대해 알아볼 것
현실에서는 IP를 직접 지정하지 않는다.
컴퓨터에다 케이블을 꽂거나 wifi로 무선으로 연결하면
그 순간에 각자의 기계에는 동적으로 IP Adress와 DNS와 subnet와 gateway address와 같은 복잡한 정보들이 자동으로 세팅이 탁 됨.
그것이 가능하기 위해서는 DHCP Server라는 것이 필요함.
(1)우리의 공유기는 보통 DHCP Server 라고 하는 프로그램을 내장하고 있음.
(2)동시에 인터넷을 사용하는 기계들에게는 DHCP CLient라고 하는 프로그램이 역시나 기본적으로 깔려있다.
(3)우리가 사용하고 있는 통신 부품들은 부품마다 공장에서 기록된 고유한 식별자를 갖고 있다.
어떤 컴퓨터의 통신부품의 식별자가 8c로 시작할수도
공유기도 통신장비이기 때문에 이런 88:~로 시작하는 식별자를 갖게됨
이런 식별자를 MAC Address (Media Access Address) 라고 하거나
또는 물리적인 주소라고 해서 Physical Address라는 표현도 씀
이 상태에서 컴퓨터를 공유기에 꽂거나
무선으로 접속을 하면
그 순간에
여러분의 DHCP CLient가 DHCP Server가 이 네트워크안에 있나요?라고 찾음
그러면서 자신의 MAC Address를 알려줌
저는 8c~로 시작하는 MAC Address를 갖고 있는 DHCP CLient인데요 IP주소가 없으니까 IP주소좀 주세요
그럼 DHCP Server가 저 정보를 받고서 응답을 함.
저는 88~로 시작되는 MAC Address를 갖고 있는 통신장치의 DHCP Server입니다.
방금 소리지른 8c로 시작되는 DHCP Client에게 192.168.0.4라는 IP를 임대해 줄 수 있다 라고 알려줌.
그것이 가능한 이유는 192.168.0.2나 192.168.0.3 모두 이전에 DHCP Server에게 IP Adress를 임대해간 상태
DHCP Server는 누구누구가 IP를 빌려갔는지를 이 안에서 기억하고 있다.
그럼 이제 그 컴퓨터가 자기는 그 IP를 쓰겠다고 응답함
그럼 DHCP Server는 이 컴퓨터안에(Router도 컴퓨터다)
8c로 시작하는 통신장치는 192.168.0.4 라는 IP를 빌려갔다고 적어놓음. 어떻게 적는지는 마법.
그리고 동시에 이렇게 응답해줌
이 IP Address는 2시간동안 임대해 드릴테니까 두시간동안 사용하시면 돼요
DHCP Client는 그 정보를 받고 우리가 아까 본
이 빈칸을 채워넣음
그럼 이제 192.168.0.4 라는 IP를 갖게됨 !
이런 메커니즘에 의해 각각의 컴퓨터는 인터넷에 통신장치를 딱 꽂는 순간에 자동으로 IP와 같은 복잡한 정보들이 세팅되는 것
그리고 옛날에 컴퓨터가 잘 움직이지 않던 시기에는 이게 없어도 그나마 쓸만했을건데 지금은 노트북, 스마트폰 같은 경우 정말 빠른속도로 접속하는 공유기를 바꿔가면서 통신이 계속 이뤄지기 때문에 DHCP같은 테크놀러지가 없었다면 모바일 혁명은 늦게왔거나 오지 않았을 것
복잡한 지식을 모르고도(내가 컴퓨터와 인터넷을 길가면서 쓰는것에 대한 공부를 하지 않아도) 인터넷을 전기쓰듯이 사용할 수 있는 것
이렇게
Dynamic하게
Host 인터넷에 연결되어있는 각각의 컴퓨터들에
Configuration 설정을 자동으로 Dynamic하게 바꿔주는
Protocol 프로토콜인 DHCP에 대한 얘기를 살펴봤다.
===
@9.DHCP (2/2)
저번시간은 이론, 이번시간엔 DHCP를 알고 있으면 예전에는 눈앞에있어도 보이지 않았던 것이 이제 보인다
공유기 접속해서 네트워크 관리 > 내부 네트워크 설정 : DHCP 서버를 제어하는 기능이라 할 수 있다
DHCP 서버동작 : 끄고 키는 것
동적 IP 주소 범위 : DHCP Server를 이용해서 IP를 임대할 때 저중에서 동적으로 빌려주겠다
저기 수동 지정에 체크하면 저기 칸이 활성화가 되는데, 숫자를 바꿔주면 특정 범위의 IP만 자동으로 빌려주고 나머지는 수동으로 하게 하고 싶단 말, 바꿀 이유는 별로 없다 --사실 무슨 말인지 모르겠다, 그냥 범위 내가 지정하는거 아냐?
IP 대여 시간(리스) : IP를 무한정 주는게 아님, 저긴 1분부터 7일까지 있네, 컴퓨터가 몇대 없으면 7일로 해놓으면 좀 더 효율적일 것, 바글바글하면 짧게 잡아서 돌려막기가 될 수 있게 하는 것.
사용중인 IP 주소 정보 : 현재 이 공유기에 두대의 컴퓨터가 연결돼있다는 것, 어떤 맥 어드레스에 어떤 IP가 주어졌는지
IP를 지정하고 싶으면 오른쪽에 체크에 표시하고
이렇게 줄 수가 있다. 수동 등록하면 위의 등록된 주소 관리에 뜬다
2시간으로 설정한 뒤 2시간을 기다리거나, 컴퓨터를 껐다키거나 하는 여러가지 방식을 통해 특정한 컴퓨터의 IP Adress를 지정할 수가 있다
오른쪽 셋은 계속 빌려주면 Dynamic IP Adress다
저~위처럼 직접 누군가에게 IP를 딱 주면 Static IP Adress가 되는 것
마찬가지로 공유기의 59.6.66.238도 기본적으로 통신사와 계약할 땐 유동(Dynamic)IP다
= 장비에게 IP를 부여하는 DHCP서버가 네트워크 바깥쪽에 있다라는 것을 암시
통신사들도 거대하고 복잡한 DHCP 체계를 갖고 있어서 그 체계를 통해서 우리에게 IP가 자동으로 할당되는 것
===
@수업 끝
저는 현대사회에서 출원할 수 있었던 가장 위대한 성취는 소비문화라고 생각합니다
최소한의 지식으로도 엄청난 일을 해낼 수 있게 됨.
화폐, 인터넷, 보험과 같이 실제로 엄청나게 복잡한 것임에도 이것을 쉬운것으로 여기게 되는것은 혁명적인 사건
인터넷과 같이 엄청 복잡한것도 아이와 어르신들도 사용할 수 있게 된 것.
근데
실제로는 복잡한데 쉽게 사용하다보면 여러가지 문제가 생김
오늘날의 인터넷은 전세계인들의 마음과 비밀과 자본을 실어나르는 통로
이 통로는 악의로 가득 차 있음
이렇게 위험한 통로에서 살아남기 위해서는 이 통로가 동작하는 방법을 알아야한다
또 통로는 다양한 가능성을 갖고 있다. 통로에 대해 많이 알수록 이용해서 할 수 있는 일이 많아짐. 기회의 통로
(1)
여러분 가정의 공유기는 네트워크와 관련된 수많은 기능을 포함하고 있는 아주 고급 장비
서버와 클라이언트
IP와 PORT, NAT와 같은 지식을 여러분이 갖추고 있다면, 공유기를 통해서 할 수 있는 일이 정말 많다
공유기의 관리자로 들어가서, 메뉴들을 눌러보세요. 보이는 것이 달라져 있을 겁니다.
(2)
NAS(Network Attched Stroage)
네트워크를 통해서 사용하는 저장장치, 도전해보세요
드랍박스나 구글 드라이브, 또는 웹하드와 같은 서비스를 여러분의 집에서 직접 운영하는 것
본질적으로는 여러분의 컴퓨터를 웹서버로 운영하는 것과 다름이 없지만 데이터의 저장, 백업과 같은 것을 쉽게 해주는 여러 편의 기능들이 포함되어 있는 솔루션을 사용하는 거라고 할 수 있다. NAS로 검색하면 여러 제품이 있을 겁니다
(3)
IP가 아닌 도메인을 통해 사용자가 서버에 접속하게 한다면?
도메인은 고정시키고, ip를 변경함으로써 보다 유연하게 서버를 운영할 수도 있다
연간 도메인은 만원~십만원 정도로 국제기구에다가 여러분이 스스로 내고 사용할 수가 있다,
freenom.com같은거 쓰면 1년은 무료,
Dynamic DNS라는 서비스를 이요하면 고정 ip를 갖고 있는 것과 비슷한 효과를 도메인 네임을 통해서 달성할 수 있다
(4)
보안
80번 포트를 쓰는 http라는 방법을 통해 웹서버와 웹브라우저의 통신을 하고 있다,
http는 중간에 누군가 감청할 수 있는 확률이 매우 높다
그래서 보완해서 도입된 방법이 https
hypertext transfer protocol over secure socket layer
https를 이용하면 안전하게 정보를 서버와 클라이언트가 주고받을 수 있도록 할 수 있다
유료였지만 요즘은 무료, 안쓸 이유가 없다, 예민한 정보를 보관한다면 반드시 써야해
Let's encript와 같은 서비스를 검색해보면 무료로 인증서를 발급해주는 서비스들이 늘어나고 있다
(5)
가정에서 서버운영은 교육적으로만 추천됨
다 제공해주는 사업자들이 있다,
웹서버 제공은 웹 호스팅,
좀 더 높은 자유도를 가질 수 있도록 서버를 제공하는 사업자를 서버 호스팅
보다 큰 규모로 여러가지 편의 기능을 제공하는 사업자를 클라우드 컴퓨팅 이라 부름
본질적으로 거의 같은 일을 하는 비즈니스들, 이런 업체들을 통해 실제 서비스를 운영해보세요
공부를 하면 안보이던것 보이고, 안들리던것이 들린다! 천천히 음미하면서 기뻐하세요