미니PC 세팅 및 네트워크 세팅

topics 400-인프라 & 아키텍처 800-프로젝트 805 미니서버 구축기
types 실습 도구
contexts 프로젝트
tags

미니PC 세팅 및 네트워크 세팅

미니PC를 서버로 활용하기 위한 기본 OS 설정과 네트워크 구성

기본 OS 세팅

본인의 경우 당근에서 미니PC를 구매하여 배란다에 연결했다.

참고: https://chobopark.tistory.com/549

미니PC 세팅 및 네트워크 세팅-1761297050233.png

서버컴 세팅

현 서버를 배포용 뿐만 아니라 NAS 같은 네트워크 스토리지로 쓸 예정이었다. 때문에:

  • SSH 접속을 통해 서버 컨트롤
  • SMB를 이용해 미니서버를 NAS처럼 사용

FTP, NFS가 아닌 SMB를 선택한 이유

나는 Mac, Android, iPad를 사용한다.

미니PC 세팅 및 네트워크 세팅-1761478746347.png
프로토콜 Mac Android 비고
NFS O X 갤럭시 파일앱에서 미지원
FTP O (읽기전용) O Mac에서 업로드 불가
SMB O O 양쪽 다 완벽 지원

왜 SMB냐면: Mac 공식 홈페이지에 FTP는 파일 업로드가 불가능하다고 나와있고, Android에서도 스트리밍 같은 편의가 SMB가 더 좋다.

SSH, SMB 라이브러리 설치 및 방화벽 허용

주의: SMB1은 보안 취약점이 많으므로 SMB2를 min protocol로 설정해야 한다.

[global]
   server min protocol = SMB2

기본 포트:

서비스 포트
SSH 22
SMB 445

네트워크 세팅

내부망 확인

서버를 외부에 공개하려면 포트포워딩이 필요하다. 먼저 ==현 공유기가 인터넷과 맞물려있는 엔드포인트인지 확인==해야 한다.

SK의 경우 일반적으로 192.168.45.1 또는 192.168.75.1 게이트웨이를 사용한다.

미니PC 세팅 및 네트워크 세팅-1761407039961.png

WAN IP 주소가 해당 공유기의 IP이다. 바로 인터넷과 연결되어 있다면 https://ip.pe.kr/ 에서 확인한 IP와 일치해야 한다. 192.~로 되어있다면 내부 IP이다. 즉 상위에 다른 공유기나 스위치가 있다는 것이다.

나의 경우 망이 아래와 같이 구성되어 있었다:

미니PC 세팅 및 네트워크 세팅-1761481497356.png

해결 방법:

  1. 공유기1과 공유기3을 2중으로 포트포워딩
  2. 공유기1을 bridge 모드로 변경
모드 설명
Bridge 그냥 전달만 해준다. 하위 공유기에 각각 공인 IP 할당
NAT 하위 네트워크에 내부 IP 할당. 동적으로 NAT table로 매핑

왜 bridge 모드를 선택했냐면: 배포하면 IP가 공개될 것이고, 전체 엔드포인트가 공개되는 것보다 미니PC에 연결된 엔드포인트만 공개되는 것이 보안적으로 유리하다고 판단했다.


삽질 포인트

3시간 삽질한 끝에 알아낸 것: SSH(22), SMB(445) 같은 well-known 포트는 ==ISP에 의해 차단된다==. 외부에서 접근이 안 된다.

445포트를 열어두고 네트워크 스토리지에 접근하려 했으나 접근이 거부되었다.

확인한 사항

  • 공유기 로그 확인
  • 서버에서 445 포트 listening
미니PC 세팅 및 네트워크 세팅-1761482576463.png
sudo tcpdump -n -i any port 445 -c 50

교훈: 다른 포트를 매핑하여 사용해야 한다.

예를 들어 22포트를 1000, 445포트를 2000포트와 매핑했다면:

  • SSH 접속: 1000포트로 접근
  • SMB 접속: 2000포트로 접근

편의사항

Hairpin 설정

같은 네트워크에서 공인 IP로 접속하면 접근이 안 된다. 같은 망 안에 있는 서버는 외부로 보내지 않기 때문이다.

내부에서는 내부 IP, 외부에서는 외부 IP... 귀찮지 않아?

해결: 공유기 설정에서 Hairpin 활성화

SSH 프로필 설정 (Mac)

접속할 때마다 키나 비밀번호를 치는 건 귀찮다. 터미널에 프로필을 설정하면 해결된다.

  • 환경: iTerm2
  • Command: ssh -i 비밀키 -p 포트 사용자명@ip
미니PC 세팅 및 네트워크 세팅-1761483316296.png

shortcut까지 설정하면 딸깍으로 서버에 접속된다.

특정 사용자 sudo 비번 생략

권한 확인

특정 사용자는 관리자 권한을 가지고 있어야 한다.

sudo visudo
# <span id="user-privilege-specification"></span>User privilege specification
root    ALL=(ALL:ALL) ALL
# <span id="members-of-the-admin-group-may-gain-root-privileges"></span>Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# <span id="allow-members-of-group-sudo-to-execute-any-command"></span>Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
  • root: 루트 사용자
  • %: 그룹
  • 형식: 적용호스트 = (모든 그룹: 모든 사용자) 실행가능한 명령

id 명령어로 현재 사용자와 그룹 확인:

uid=1000(mandugohigh) gid=1000(admin)

비번 생략

sudo visudo

NOPASSWD 설정 추가:

mandugohigh ALL=(ALL) NOPASSWD: ALL

왜 이렇게 했냐면: 매번 비번 치기 귀찮다.
단, 보안 위험이 있어서 비밀번호 접속 비활성화 필수 (pubkey 인증만)

sudo vi /etc/ssh/sshd_config

PermitRootLogin no          # root 비활성화
PasswordAuthentication no   # password 비활성화
PubkeyAuthentication yes    # Key authentication 활성화

주요 명령어

# <span id="방화벽-확인"></span>방화벽 확인
sudo ufw status

# <span id="포트-리스닝-확인"></span>포트 리스닝 확인
sudo netstat -tlnp

# <span id="패킷-캡처"></span>패킷 캡처
sudo tcpdump -n -i any port 445 -c 50

관련 문서