[라즈베리파이] 외부 연결 하기

2018. 2. 21. 00:47공부 자료/리눅스

[라즈베리파이] 외부 연결 하기


    살짝 뜬금없는 주제인 라즈베리파이 이야기를 해볼까 한다. 예전부터 통신쪽에 ( 서버쪽에 ) 관심이 많아서 서버 스터디를 했었는데, 그 때 튜터 선생님이 라즈베리파이를 사주셨다. 그 때에는 이게 뭔가 싶기도 했고, 통신 관련 지식이 전무하다싶었기에 딱히 뭘 했던 기억은 없었다. ( 심지어 사놓고 라즈비안 - 라즈베리파이 전용 OS를 설치하지도 않았었다... ) 그 이후로 여러 공부를 하고, 라즈베리파이( 특히 IOT )에 관심이 생기면서 라즈베리파이를 가지고 놀기 시작했다. 모터로 불을 끄는 프로그램도 만들어보고, 외부에서 접속 가능한 블로그나 사이트를 만들어 보기도 했다.

    

    그 이후로 이사도 많이 다니고, 라즈베리파이 위치도 많이 바꿔보면서 이제는 라즈베리파이 설치하는데 도가 텄다. ( 사실 회사에서 서버 설치하면서 많이 배웠다. 조금 큰 라즈베리파이라고 생각하면 편했을텐데... ) 그중에서도 오늘은 라즈베리파이를 외부에서 ssh로 접속 가능하게 하는 방법을 포스팅 해볼까 한다. 

    

    사실 라즈베리파이를 사더라도 많이 관심이 없어지는 이유는, 접근성 때문이 아닐까 싶다. 괜히 라즈베리파이를 가져와서 모니터에 연결하고, 다시 인터넷에 연결하고, 마우스 키보드를 연결하고.. 다 좋은데 이걸 다시 치우는 과정은 또 얼마나 귀찮은지.. 제일 좋은 방법이 그래서 데스크탑이나 모바일 기기에서 원격으로 라즈베리파이에 접속하는 것이다. 설명하기 전에, 필자의 공부 복습 겸, 여러가지 잡 설명을 곁들이도록 할 것임을 유의해 주었으면 한다.


    라즈베리파이에 접속하기 위해서는 일단 라즈비안을 깔아야한다. (...) 당연하겠지만 OS 없는 컴퓨터는 돌덩어리다. 그 이후에는 GUI가 있는 라즈비안이면 쉽게 왼쪽 위에있는 와이파이 ( 라즈베리파이 3 부터는 와이파이 모듈이 내장되어있는 것으로 안다. 2라면 안타깝지만 라즈베리파이용 와이파이 동글을 사야한다. ) 연결을 진행하면 된다. 이 연결은 직관적으로 보이기 때문에 그대로 진행하면 된다. GUI가 없는 CLI 라즈비안은... 나도 잘 모르겠다. ( CLI로 진행해야지! 하다가 필자도 실패하고 GUI 있는 버전으로 깔았다. 더 자세한건 라즈비안 network-scripts 로 검색 해 보면 나올 것 이다. )


    와이파이 연결을 진행하면 ifconfig 명령어를 입력하여  현재 라즈베리파이의 연결 상태를 볼 수 있다. 또한 route 명령어로 현재 연결된 기본 Gateway를 확인 가능하다. ifconfig를 쳐서 나온 wlan0의 inet feild는 현재 라즈베리파이에 부여된 내부 IP를 확인 가능하다. 내부 IP는 외부 IP 1개로 여러 기기에 IP를 부여하기 위해서 만든 IP를 의미한다. 공유기는 이 내부 IP를 와이파이 혹은 랜선으로  연결하면 자동으로 분배해준다. 이를 유동 IP라 하는데, 이 내부 IP는 고정으로 부여되는 것이 아니라, 공유기의 상태에 따라서 랜덤하게 특정 IP 범위 내에서 부여가 되는 것이다. ( 이를 DHCP 라고도 한다. )



[ 사진1 - 내부 IP 부여 ] 이 그림에서 설명하자면, 기기3이 다시 접속하면 .3이 아닌 .5같은 IP가 부여될 수 있다는 것이다. 다시 말하면 접속을 해제하지 않는 한 다시 부여되진 않는다는 의미이다.


    말이 조금 샜는데, 다음과 같이 화면이 나올 것이다.

[사진 2 - ifconfig ]


    내 라즈베리파이의 내부 IP는 172.30.1.17이다. 이제 route를 눌러서 기본 Gateway를 확인 해 보자.


[사진 3 - route ] 내 기본 Gateway는 172.30.1.254이다. 이 기본 GW는 각 공유기 회사 별로 다르게 존재한다고 알고있다. 자세한 것은 구글 참조.


    라즈베리파이로 인터넷을 켜서 ( Cromium이나 Firefox를 키면 된다. ) 저 기본 Gateway를 쳐서 들어간다. 저 Gateway는 공유기 설정 홈페이지가 나오는데, 이는 공유기 회사마다 다른 홈페이지가 나온다. 대부분의 요즘 나온 공유기들은 포트포워딩이라는 기능을 제공하는데, LG의 예전 공유기는 제공하지 않는다. 그럴땐 IPTime 공유기를 싸게 하나 산다. ( ... ) 필자도 샀다. ㅠㅠ...


    포트 포워딩은 외부 IP를 통해서 내부 IP를 접속하기 위해서 필요한 일종의 Matching 함수이다. 다음과 같은 그림을 보자.

[사진 4 - 공유기 설정] 

    우리는 기기 1에 접근하려면 어떻게 해야 할까? 공유기에 172.28.245.1을 알려줘! 라고 해야 할까? 그렇다면 공유기는 외부와 172.28.245.1의 어느 포트를 연결 시켜줘야 할까? 이런 기능을 위해서 포트포워딩이 존재한다. 

[사진 5 - 포트포워딩 설정]

    공유기 IP의 2000~3000 포트로 접근하면 공유기는 172.28.245.1 IP의 22번 포트로 연결 해 준다. 이게 포트 포워딩이다. 말이 좀 어려웠는데, 포트 포워딩은 쉽게 말하면 " 외부 IP : PORT를 내부 IP : PORT 로 연결 시켜주는 친구 " 라고 생각하자. 이 포트 포워딩 방법은 각 공유기 별로 방법이 다르기 때문에 생략하도록 하겠다. 구글에 "OO공유기 포트포워딩" 으로 검색하면 잘 나오게 된다. 공유기에 따라서 껏다 켜야지 포트포워딩이 적용되는 것이 있으므로, 그 것도 잘 보고 진행하도록 하자.


    축하한다. 이제 외부에서 라즈베리파이에 접속 가능하게 되었다. 컴퓨터를 켜서 putty 프로그램( 윈도우 ssh )으로 ssh 외부 IP : 외부 PORT로 접속이 되는지 확인하고 신나는 라즈베리파이를 즐기면 된다. 이 때, 접속이 끊어져도 유지 시키는 방법이 있다. IP를 부여하는 것이 유동적으로 되어 재 접속시 다른 내부 IP를 받을 수 있다는 아까의 설명이 기억날 것이다. 그럼 이것을 정적으로, 고정으로 바꾸게 되면 되는것이 아닌가? mac 주소 ( 컴퓨터나 모바일 기기의 Lan interface 주소 )는 어떤 기기를 불문하고 유일하기 때문에, 우리는 이 mac 주소를 통해 고유한 IP를 부여 가능하다. 이것 또한 공유기 설정을 잘 뒤져보다 보면 나온다. ( 공유기 회사마다 설정이 달라서 설명이 불가능하다. ㅠㅠ.. ) 이것까지 끝났다면 당신은 진짜 라즈베리파이를 즐길줄 아는 사람이 되었다.


    질문이 있다면 댓글이나 이메일도 괜찮다. 필자는 질문을 좋아한다.