frp를 활용한 사설 네트워크 간 통신 구축

frp 소개 및 활용 방안

frp(Fast Reverse Proxy)는 오픈소스 기반의 리버스 프록시 도구로, 방화벽 뒤에 위치한 내부 네트워크 장치를 외부에서 접근 가능하게 만드는 '내부망 터널링' 솔루션입니다. 예를 들어 저사양의 클라우드 서버(예: 알리바바 클라우드 ECS)를 하나 확보하고, 고성능의 개인 PC를 가정 내에 두면, 이 PC의 자원을 frp를 통해 외부에서 원격으로 사용할 수 있습니다.

이 방식은 자체 소스 코드 저장소(Git 서버), 지속적 통합/배포(CI/CD) 파이프라인, 개인 웹사이트, 소규모 커뮤니티 포럼 또는 실시간 주식 데이터 분석 시스템 등 다양한 개인용 인프라 구축에 적합합니다.

서버 측 설정 (클라우드 인스턴스)

다음은 frp 서버(frps)의 구성 파일 frps.yaml 예시입니다. 이 설정은 클라우드 상의 서버에서 실행됩니다.

bindAddr: "0.0.0.0"
bindPort: 7000

authentication:
  method: token
  token: "strong_secret_token_123"

log:
  level: info
  to: /var/log/frps.log
  maxDays: 7

webServer:
  addr: 0.0.0.0
  port: 7500
  user: admin
  password: securepass

tcpMux:
  enable: true

maxPoolCount: 100
  • bindAddr: 모든 외부 접속을 허용하기 위해 0.0.0.0으로 설정.
  • bindPort: 클라이언트가 연결할 기본 TCP 포트.
  • token: 보안 인증을 위한 비밀 토큰. 실제 운영 시 복잡한 값 사용 권장.
  • webServer: 관리자 대시보드 활성화. http://<서버IP>:7500 으로 접속하여 현재 연결 상태 확인 가능.
  • tcpMux: 다중 연결을 단일 TCP 연결로 병합하여 성능 향상.

클라이언트 측 설정 (내부 장비)

가정 내 컴퓨터에서 실행되는 frp 클라이언트(frps)는 다음과 같은 frpc.yaml 설정을 사용합니다.

serverAddr: "your_cloud_server_ip"
serverPort: 7000

authentication:
  method: token
  token: "strong_secret_token_123"

log:
  level: info
  to: ./frpc.log
  maxDays: 7

tcpMux:
  enable: true

proxies:
  - name: home-ssh
    type: tcp
    localIP: 127.0.0.1
    localPort: 22
    remotePort: 7001

  - name: internal-web
    type: http
    localPort: 8200
    customDomains: [home.yourdomain.com]
  • serverAddr: 클라우드 서버의 공인 IP 주소.
  • proxies 섹션:
    • TCP 프록시 (SSH): 외부에서는 ssh -p 7001 user@your_cloud_server_ip 명령으로 내부 SSH 서비스에 접근 가능.
    • HTTP 프록시: home.yourdomain.com 도메인을 서버 IP로 DNS 설정 후, 일반 웹 브라우저로 내부 웹 애플리케이션에 접근 가능.

방화벽 및 보안 고려사항

클라우드 서버의 보안 그룹 또는 로컬 방화벽(iptables 등)에서 다음 포트를 개방해야 합니다:

  • 7000: 클라이언트 연결용
  • 7001: SSH 터널용
  • 7500: 관리자 대시보드 (보안상 필요 시 127.0.0.1만 허용하거나 비밀번호 강화)
  • 8200: HTTP 서비스용 (선택적)

대시보드는 외부 노출 시 정보 유출 위험이 있으므로, 공개 IP에서 접근 제한을 두거나 HTTPS + 강력한 인증 조합을 사용하는 것이 좋습니다.

실행 방법

서버와 클라이언트 모두 바이너리 파일을 다운로드 후 아래 명령어로 실행합니다:

# 서버 실행
./frps -c ./frps.yaml

# 클라이언트 실행
./frpc -c ./frpc.yaml

시스템 부팅 시 자동 실행이 필요하면 systemd 서비스 또는 launchd 등을 활용해 등록할 수 있습니다.

태그: frp 내부망터널링 리버스프록시 네트워크보안 클라우드인프라

7월 31일 07:49에 게시됨