개인 서버 설정 준비
- 왜 맥 미니를 개인 서버를 하느냐에 대한 점은 전에 포스팅에 적어놨으니, 이번에는 어떤 방식으로 설정하는지에 대해서 글을 써보려고 합니다.
Mac 서버로 활용하기 전, 필수 프로그램 다운 받기
이때는 Homebrew라던가 Iterm을 통해서 Terminal을 Oh-my-zsh라던가.. 등등을 커스터마이징을 하면 됩니다.
해당 부분은 생략해도 되지만, 저는 귀찮아서 한꺼번에 Mac Mini에 GUI 환경에서 다 설치를 했습니다.
위의 블로그에서 Terminal을 커스텀 하기 쉽게 설명을 해주졌습니다.
그리고 Mac을 서버로 활용하는 저의 목적 자체가 ==아이패드로 docker를 개발하자!==
의 목적이 있었다보니 해당 목적을 수행하기 위해서는 Vim의 기능이 좀 많이 들어가고, 무엇보다 심심한 Vim을 조금 꾸미고 싶다보니,
Vim을 꾸미는 작업을 진행했습니다.
https://blog.bluesh.io/vim-ide/
맥미니의 원격 접속 허용하기
General > Sharing
을 들어가시면,
위의 사진처럼 원격 로그인 화면이 OFF 되어 있는 것을 On으로 바꿔주시면 Mac 에서는 원격 로그인을 받아드릴 준비가 됩니다.
네트워크 포트 포워딩
저는 TP Link 네트워크를 사용 중입니다.
Iptime 혹은 다른 공유기를 사용하시는 분들은, 해당 공유기의 네트워크 관리자 사이트로 찾아가시면 됩니다.
Tplink는 정보가 많이 없어서 조금 삽질을 많이 한 감이 있지만, 대부분은 Iptime을 사용하셨습니다.
하지만, 저도 IPtime을 보고 따라했지만, 결과는 비슷했기 때문에, 다른 공유기를 보유하신 분들도 괜찮을 것 같습니다.
우선 본인의 공유기의 admin 페이지로 들어갑니다.
TPlink의 경우
[192.168.0.1]
입니다.
그리고 포트포워딩 메뉴로 갑니다. 저 같은 경우네는 포워딩인데, 상관 없습니다.
그후에 포워딩에서 SSH를 추가합니다. 이때 SSH 접속은 22번 포트이므로 22-22, 22로 포트포워딩을 해줍니다.
해당 포트포워딩을 완료하면 외부 IP를 통해서 SSH 접속을 하게 된다면, 서버로 성공적으로 접근이 가능합니다.
맥을 서버로 설정을 하는 부분은 여기까지가 끝입니다. 아래 부분은 부연설명이이기 때문에, 개념을 아신다면 굳이 보지 않으셔도 됩니다.
본인의 외부 IP를 통해서 접속 하면 완료 입니다.
내부망 외부망
- 위의 작업을 하게 된다면, 외부에서도 ssh 접속이 가능합니다. 하지만, 처음 해보시는 분들은 위 TPlink에서 어떤 IP를 입력해야하시는지 헷갈리시는 분들이 있을것 같아서 부연 설명을 좀 하려고 합니다.
내부망
개발을 해보신 분들은 아실지 모르겠지만, 본인의 로컬 컴퓨터에서 localhost:3000 번대로 접속하면, 프로젝트가 뜨고, 만약 다른 기기, 예를 들면 모바일 기기에서 접속하고 싶다면, 해당 로컬 컴퓨터의 IP를 찾아서 [로컬 컴퓨터의 IP:3000] 이런 식으로 접속을 하셨을 겁니다.
이때 조건이 있습니다. 무조건 같은 Wifi 네트워크 안에 들어와야한다는 점이죠.
이때 이 부분을 내부망이라고 합니다. 즉, 같은 공유기 안에서는 포트가 열리던 닫혀있던 접속이 매우 자유롭습니다.
무조건 내부망을 들어오기 위해서는 해당 wifi를 접속해야하기 때문에 생각보다 제약이 크지 않습니다.
그렇기 때문에 Mac Mini의 원격 접속을 열어두게 된다면 내부망에서는 쉽게 접근이 가능합니다.
즉, 상단 TPlink 어드민에서 적는 IP 주소는 맥미니의 내부망 IP를 의미합니다.
외부망
그러면 내부망은 알겠고,,,외부망은 무엇이냐..결국은 외부에 있는 인터넷 망을 의미합니다.
외부망은 public하기 때문에 각 종 공격에 취약합니다.
즉, 외부망에 나의 포트를 퍼트리는 순간부터 공격의 대상이 되기 쉽습니다. 특히 누구나 알고 있는 포트 번호 SSH(22), HTTP(80), HTTPS(443) 등등
해당 보안을 철저하게 해야지 공격에 얻어 맞지 않습니다.
기껏 돈 투자해서 서버 샀는데 서버가 뻗어버리면 곤란하니까요
그리고 내부망은 위에 설정에 보이다 싶이 상단의 IP인데..그러면 외부망의 IP는 무엇일까?
간혹 저 IP로 SSH 접속하면 안되는거야? 라고 생각하시는 분이 있으실듯 하여서 약간의 아주 라이트하게 부연설명을 하겠습니다.
사실 저도 그렇게 잘 아는 편아 아니라서..ㅠ
우선 제가 만약 외부에 있다면, 접속하는 순서를 알면 이해가 쉬우실겁니다.
위의 그림처럼 외부에 있는 제가 내부망으로 바로 다이렉트로 들어가지 못합니다.
즉, 쉬운 설명으로는
외부 -> 공유기 -> 내부 서버
이런 식으로 접속이 가능하며, 해당 접속할 때 각각의 IP는 모두 존재합니다
IP는 결국 주소를 의미하니까요, 택배를 찾아갈때 00아파트라고 말하면 아무도 택배를 배송을 성공하지 못할겁니다.
00아파트 000호 처럼 구체적인 주소가 필요할겁니다.
해당 예시처럼 외부 IP, 내부 IP 도 해당 개념과 유사하다고 생각하면 됩니다.
외부망 주소 쉽게 구하는 법
딱히 거창하지도 않습니다.
그냥 네이버에 내 IP라고 검색하면, 잘 뜹니다 ㅎㅎㅎ
개떡같이 써도 찰떡같이 알아듣는 갓이버..
TPlink 어드민의 포트 포워딩 의미
이제 개념을 아시는 분이시라면, 어느정도 감을 잡으셨겠지만, TPlink의 작업은 결국 아파트를 진입하고(외부망) 몇호인지 찾아가는 방법을 명시해주는 것입니다(내부망).
즉, 네비게이션에는 00아파트로만 찍어서 가지만, 엄청난 대단지의 아파트라면 길을 잃기가 쉽겠죠? 그래서 아파트만의 정밀 지도를 통해서 해당 000호를 찾아가는 겁니다.
그 정밀지도를 쥐어주는 과정이 포트포워딩 과정이라고 하면 될까요?ㅎㅎ
22번 포트로 진입할 때 해당 Ip 주소의 같은 22번 포트로 맵핑 시켜주는 것이죠
보안
아까 위에서 말씀드렸듯이, 외부에 공개된 포트가 있다면, 서버 보안에 신경을 많이 써야합니다.
현재는 mac mini서버의 비밀번호를 치셔서 들어가신다면, 해당 방식은 조금 위험한 방식입니다.
해킹하는 사람들은 해당 비밀번호를 모두 눌러보는 메크로를 사용하기 때문에, 비밀번호 보다는 SSH RSA키를 이용하는 것이 더 좋습니다.
해당 방식은 다음 포스팅에서 설명하겠습니다.