이번에는 라즈베리파이에 고정 IP를 할당해서 기기를 껐다 켤 때마다 IP 주소가 바뀌는 불편함을 방지해보자.

그리고 SSH 프로그램을 이용해서 라즈베리파이에 명령어를 입력하는 방법도 함께 다룬다.


본문 내용은 https://www.modmypi.com/blog/tutorial-how-to-give-your-raspberry-pi-a-static-ip-address 이곳의 글을 주로 참조하였다.


아래 과정을 다 따라하고나면 1번 방향으로 동일한 네트워크 내에서 SSH로 접근하는 것과, 2번 방향으로 외부 인터넷망에서 SSH로 접근하는 것을 해결할 수 있다.



# 라즈베리파이 현재 IP 주소 확인하기


지난 글에서 라즈베리파이를 공유기에 랜선으로 꽂아서 연결하는 것을 추천한 바가 있다. 공유기가 라즈베리파이에 할당한 IP 주소를 메인 컴퓨터에서 확인해보자.


윈도우 7 기준으로,

제어판 > 네트워크 및 인터넷 > 네트워크 및 공유센터로 들어가서 메인 컴퓨터가 공유기에 유선랜으로 연결된 경우 '로컬 영역 연결', 무선랜으로 연결된 경우 '무선 네트워크 영역'을 눌러서 연결 상태 창을 연다. 그리고 '자세히'를 눌러서 네트워크 연결 세부 정보를 확인한다. (스크린샷은 연구실에서 찍은 거라 로컬 연결 영역이고, 집에서 노트북으로 연결했을 때는 약간 내용이 많이 나오네..)



그러면 거기서 'IPv4 기본 게이트웨이' 라고 적힌 곳의 IP 주소를 웹브라우저에 입력한다. 공유기 설정에 접근하기 위해서이다.



주소창에 원래 있던 IP 주소와 외부 IP주소는 가렸다. 혹시나 모를 보안을 위해서 ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ 보안은 쥐뿔도 모르긴 하지만.


사용하는 공유기에 따라서 화면은 다를 수 있다. '관리도구' 등의 메뉴를 눌러 공유기 설정으로 들어간다.


이름은 조금 다를 수 있지만 내부 네트워크를 관리하는 곳에서 raspberrypi 라는 기기에 어떤 IP 주소가 할당되었는지 볼 수 있다.




# 포트 포워딩


밑에서 사용할 PuTTY같은 SSH 서비스로 라즈베리파이에 접근하고 싶거나, 우리의 목표인 FTP 연결을 외부 네트워크에서도 연결하고 싶다면 포트 포워딩은 필수이다. 포트 포워딩은 네트워크 외부에서 공유기 IP를 쳐서 들어왔을 때 특정 포트로 접근을 하면, 요청한 포트 번호에 따라서 내부 네트워크에 연결된 기기들에 할당된 내부 IP 주소로 연결해주는 것이다.ㄴ


공유기 설정에 들어간 김에 한 번에 해결하자.


규칙이름은 원하는대로 (22번 포트이면 사실 ssh 뭐시기라고 적는게 나았을텐데 이제와서 바꾸기 귀찮으니 그냥 뒀다.) 쓰고, 내부 IP 주소는 라즈베리파이가 할당받은 IP 주소를 적는다. 나는 TCP, UDP 각각 따로 규칙 설정을 했는데 TCP/UDP 자동으로 세팅해주는 거도 사실 상관 없을 것 같다. 내부 포트 외부 포트는 별다른 일이 없다면(다른 서비스랑 충돌하거나 그러지 않는 이상) 동일하게 세팅하면 된다.


SSH 서비스는 주로 22포트가 기본이므로 22번 포트, FTP는 주로 21포트가 기본이므로 21번 포트를 각각 포트 포워딩 설정해준다.



마지막으로 공유기 설정 창을 닫기 전에 외부 IP 주소를 확인하고 끄자. 이 IP 주소를 알고 있으면 외부 IP 주소와 방금 설정한 포트포워딩을 이용해서 전세계 어디서든 라즈베리파이에 접근할 수 있다.



# 라즈베리파이 터미널 접속


라즈베리파이에 모니터와 키보드를 연결해서 쓰는 중이라면 이부분은 넘어가도 된다.

다른 메인컴퓨터에서 접속중이라면 SSH 접속 프로그램인 PuTTY 프로그램을 켜자.



상세 설정은 나중에 하더라도 일단 라즈베리파이 본체에 접근하려면 Host Name (or IP address) 라고 되어있는 부분에 아까 확인한 라즈베리파이의 IP 주소를 적는다. 포트나 커넥트 타입을 확인한다.


이 때 라즈베리파이의 IP는 공유기가 할당한 내부 IP 주소를 적어도 되고, 이제 포트 포워딩을 마쳤으므로 공유기 자체가 가지고 있는 외부 IP 주소를 적어도 된다. 22포트로 접근을 하면 자동으로 라즈베리파이에 연결되게 해뒀으니까


PuTTY 켤 때마다 아이피주소 적는게 번거롭다면 IP 주소를 쓴 다음에 Saved Sessions 부분에 적당한 이름을 적고 Save를 누르면 저장을 한다. 다음번에 설정을 불러올 때는 Load를 누르면 된다.


그리고 Open을 눌러보자.


login as: 라고 뜨는 부분에는 아이디 (기본으로 pi) 입력하고 엔터,

pi@<IP address>'s password: 라고 뜨는 부분에는 비밀번호 (기본으로 raspberrypi) 입력하고 엔터.

비밀번호 부분에 몇글자 적었는지 안보이더라도 잘 입력 중이니 엔터만 잘 치면 된다.


제대로 잘 입력했다면 로그인에 성공하고 명령어를 입력할 준비가 다 된 것이다.





# 현재 네트워크 정보 확인


네트워크 설정을 바꾸기 전에, 명령어 입력하는 연습도 할겸 라즈베리파이의 현재 네트워크 연결 정보를 확인해보자.


(아래 스크린샷들은 위에 링크한 참조 페이지에서 퍼왔다.)


ifconfig



나는 랜선으로 연결한 상태이기 때문에 eth0으로 잡혀있는 것을 볼 수 있다.

여기서 주목할 정보는 다음과 같다. (적어두라는 뜻이다.)


inet address: 라즈베리파이의 현재 IP 주소

Bcast: broadcast IP range

Mask: Subnet Mask address


netstat -nr



여기서는 GateWay, Destination 정보를 적어둔다.



# 네트워크 설정 변경해서 고정 IP 할당


라즈베리파이의 네트워크 설정은 /etc/network/interfaces 에 저장되어있다. nano 편집기를 써서 편집을 해보자. 그리고 이런 중요한 설정 파일은 관리자 권한이어야 편집이 가능하다. superuser 권한을 얻을 수 있도록 sudo를 붙여서 실행하자.


터미널에 다음과 같은 명령어를 입력한다.


sudo nano /etc/network/interfaces


그러면 화면에 다음과 같은 내용이 나온다.


이걸 아래와 같이 바꾸자. 


address, netmask, network, broadcast, gateway에 집어넣을 값의 설명은 다음과 같다.


address : 할당할 내부 IP 주소 (공유기에서 확인한)

netmask : ifconfig에서 나온 Mask

network : netstat -nr에서 나온 Destination

broadcast : ifconfig에서 나온 Bcast

gateway : netstat -nr에서 나온 공유기 Gateway


덧.

아마 무선으로 하려면 iface wlan0 inet manual 이라고 써진 부분을 위로 올려서 

iface lo inet loopback 밑에 iface wlan0 inet static 이라고 쓰고 나머지 비슷하게 작성하면 되지 않을까 한다.

직접 테스트해본 것은 아니므로 제대로 안된다면 다른 글을 참조하길 바란다. 불친절하지만 어쩔수 없..


이렇게 해두고 Ctrl+O 를 누르면 저장 (^ 표시가 Ctrl 키를 의미), Ctrl+X를 누르면 종료이다. 굳이 저장 후 종료하지 않아도 파일이 변경된 상태에서 종료하면 저장할 것인지 물어보긴 한다.


그리고 터미널에 sudo reboot 입력해서 재부팅하고 나면 라즈베리파이에 동일한 IP주소가 할당되는 것을 확인할 수 있다.

이로써 라즈베리파이에 고정 아이피 할당하는 단계가 끝났다. 여기까지 따라왔다면 축하한다.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

받은 트랙백이 없고 , 댓글  6개가 달렸습니다.
  1. putty 로 오픈 했는데 아무글자도 안뜨네요 그러다가 타임아웃되고
    ip는 맞게 해놨는데 뭐가 문제일까요?
    • 아 해결했습니다 내부IP말고 외부 IP로 오픈하니 열리네요.
      좋은 정보감사합니다
  2. 지나가던 선비 2017.01.19 20:04 신고
    putty로 라즈베리파이를 열 때 Network error: connection refused 라고 오류가 발생하는데 왜 그런거죠?
    • 라즈베리파이가 인터넷 연결이 제대로 안되어있거나 해서 접속할 대상을 못찾은 것 같이 보이네요. 번거로우시더라도 모니터를 연결하고 gui 환경에서 확인해보시는 것도 괜찮을 것 같습니다.
  3. 자세한 포스팅에 감사합니다.
    언제 답변이 달릴지는 모르겠지만 질문드립니다.

    putty로는 현재라즈베리파이와 동일 네트워크상에 있는 pc로 라즈베리 파이에 접속도 가능하고 외부 ip로도 22번 포트를 통해 ssh접속이 가능한대...

    동일한 조건으로 라즈베리파이와 동일 네트워크에 있는 pc에서는 내부 ip:1000(80포트를 1000으로변경함, webpage)로는 접속이 가능하지만 외부 ip를 통해 접속이 불가한대 어떤 설정을 어디서 추가로 해줘야하나요.?

    다른 네트워크에서는 공인 ip:1000포트로 접속이 되기때문에 포트포워딩 문제는 아닌것 같습니다.

    제 네트워크구성은 아래와 같습니다.

    메인 공유기 (BTv) ->
    라즈베리파이(무선 192.168.25.13) (와이파이로 ip세팅함)
    노트북 192.168.25.4 (와이파이 이용)
    애니게이트 유무선 공유기

    메인 공유기 아래 3개의 장치가.같은 네트워크로 구성되어있습니다.
    • 확인이 늦었습니다 ㅎㅎ;

      세 번째 문단이 조금 이해가 안돼서 다시 질문드립니다.
      putty 이용해서 ssh 접속하는 것은 내/외부 IP 모두 정상적으로 접근이 되는데,
      웹브라우저를 이용해서 (1000번 포트로) 접속을 하면 내부 IP로만 접근이 되고 외부 IP로는 접근이 안된다는 것인가요?

      혹시 https://iptime.com/iptime/?page_id=174&nType=UFFscUh5dURlaTNsU1BwZGlNV2czcWpRb3B1QldXK21aUXoza1VRdlB0UFZjN012UUhUejZKa1ZDNitEWWU5LzVHa1dYVDlncG9LNW12TWloa3NIVENPd2FWa0xHNzV5S1ZnZFJiRm8yWUFyOWVWejJSOC9yaVhEWTUrOXlveGZmdU4zV0VnU0MyTm1TajZEaTB5RmpUZElGY3pPczFnVk9Cb05WRmpENGc9PQ==
      이 글의 증상과 비슷한 것인지 확인 부탁드릴게요.
secret