frp는 공인망에서 접근 가능한 서버 한 대를 두고 내부망 서비스를 외부로 포워딩하는 도구입니다. frps는 공인 서버에서, frpc는 내부망 장비에서 실행하며, 양쪽 설정을 서로 바꿔 쓰면 안 됩니다.
이 글에서는 공식적으로 현재 지원하는 TOML 설정 방식을 사용하고, 설치 진입점은 공식 배포판으로 삼습니다. 서드파티 원클릭 스크립트나 오래된 Docker 이미지와 섞어 쓰지 않습니다.

설명 이미지: frp: 내부망이 먼저 공인망에 연결하고, 외부는 지정한 서비스 포트로 접근
다운로드와 디렉터리
frp 공식 Releases에서 시스템과 CPU 아키텍처에 맞는 패키지를 고르고, 양쪽 모두 가능하면 같은 버전을 사용하세요. 압축을 풀고 필요한 바이너리와 설정 파일만 남기면 되며, 곧 지나가버릴 다운로드 버전 번호를 튜토리얼에 고정해 둘 필요는 없습니다.
먼저 포그라운드에서 실행해 포트와 인증이 정상인지 확인한 다음, 공식 가이드나 현재 시스템의 서비스 관리 방식에 맞춰 부팅 시 자동 실행을 설정하세요. 서비스 디렉터리, 실행 사용자, 설정 파일 권한도 함께 계획해야 하며, 설정에 들어 있는 token을 모든 로컬 사용자가 읽을 수 있게 두면 안 됩니다.
서버 측 frps.toml
아래에서는 7000을 제어 연결 포트로 열고, 프록시가 원격 8443만 사용하도록 허용합니다. token과 패널 비밀번호는 모두 반드시 교체해야 하는 자리 표시자입니다.
bindPort = 7000
allowPorts = [{ single = 8443 }]
[auth]
method = "token"
token = "REPLACE_WITH_THE_SAME_LONG_RANDOM_TOKEN"
[transport.tls]
force = true
[webServer]
addr = "127.0.0.1"
port = 7500
user = "frp-admin"
password = "REPLACE_WITH_ANOTHER_LONG_RANDOM_PASSWORD"
allowPorts를 채울 때는 배열 대괄호가 제대로 닫혔는지 확인하세요. 제어 포트, 서비스 포트, 관리 패널은 각각 한 가지 역할만 맡기고, 포트 범위 전체를 열어버리면 안 됩니다.

설명 이미지: 세 개의 포트, 세 가지 용도
클라이언트 측 frpc.toml
내부망 192.168.100.20:443의 HTTPS 서비스를 정말로 서버 8443으로 노출해야 한다고 가정해 봅시다:
serverAddr = "YOUR_PUBLIC_SERVER_IP"
serverPort = 7000
[auth]
method = "token"
token = "REPLACE_WITH_THE_SAME_LONG_RANDOM_TOKEN"
[transport.tls]
enable = true
[[proxies]]
name = "home-https"
type = "tcp"
localIP = "192.168.100.20"
localPort = 443
remotePort = 8443
서버 주소, 내부망 IP, token을 실제 값으로 바꾸고, frpc가 실행되는 장비에서 이 내부망 서비스에 바로 접근할 수 있는지 확인하세요. 대상 서비스 자체에 적절한 HTTPS 인증서와 인증이 있어야 하며, 공유기나 NAS의 보호되지 않은 관리 화면을 그대로 공인망에 열어서는 안 됩니다.
frp 전송 계층의 TLS는 양 끝단 사이의 연결을 암호화합니다. 대상 서비스의 HTTP를 자동으로 HTTPS로 바꿔주지도 않고, 서비스 계정 인증을 대신해 주지도 않습니다. HTTPS 도메인과 인증서는 실제 사용 방식에 맞아야 합니다.
실행과 점검
서버 측은 해당 디렉터리에서 실행합니다:
./frps -c ./frps.toml
클라이언트는 먼저 설정을 검사한 뒤 실행합니다:
./frpc verify -c ./frpc.toml
./frpc -c ./frpc.toml
서버 측 보안 그룹과 방화벽에서 필요한 TCP 7000과 8443을 허용하고, 제어 연결의 출처를 제한하면 더 좋습니다. 7500 패널은 루프백 주소에만 바인딩하고, 확인할 때는 SSH 포워딩을 사용하세요. 편하다고 해서 전체 인터페이스로 바로 바꾸지 마세요.
ssh -L 7500:127.0.0.1:7500 your-user@your-server
장애는 먼저 계층별로
frpc가 연결되지 않으면 서버 주소, 7000, 방화벽, token을 먼저 확인하세요. 로그인은 되는데 프록시 등록이 실패하면 원격 포트 충돌과 allowPorts를 확인하세요. 프록시는 정상인데 페이지가 열리지 않으면 내부망 서비스 자체, 8443, HTTPS 도메인/인증서를 확인하세요. 각 계층의 로그를 보고, 모든 파라미터를 한꺼번에 마구 바꾸지 마세요.
설정은 TOML 문법 검사를 마쳤지만, 아직 여러분의 두 장비에서 터널을 세운 것은 아닙니다. 참고: 공식 프로젝트, 서버 설정, 예제와 설명.