← 목록으로

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

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

미니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 게이트웨이를 사용한다.

386x416

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

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

376x353

해결 방법:

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

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

편의사항

Hairpin 설정

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

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

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

SSH 프로필 설정 (Mac)

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

  • 환경: iTerm2
  • Command: ssh -i 비밀키 -p 포트 사용자명@ip

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

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

특정 사용자 sudo 비번 생략

권한 확인

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

sudo visudo
# User privilege specification
root    ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# 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 활성화

주요 명령어

# 방화벽 확인
sudo ufw status

# 포트 리스닝 확인
sudo netstat -tlnp

# 패킷 캡처
sudo tcpdump -n -i any port 445 -c 50

관련 문서