현대적이고 간단한 TCP 터널은 로컬 포트를 원격 서버에 노출시켜 표준 NAT 연결 방화벽을 우회합니다. 그게 전부입니다. 더 이상, 그 이상.
# 설치 (녹 필요, 아래의 대안 참조)화물 설치 Bore-Cli# 지역 기관 보어 Local 8000-to Bore.pub
이로 인해 localhost:8000
에서 bore.pub:<PORT>
에 로컬 포트가 노출됩니다. 여기서 포트 번호는 무작위로 할당됩니다.
bore
LocalTunnel 및 NGROK과 유사하게 설치하기 간단하고 자조 주최자가 부착되지 않은 TCP 트래픽을 전달하기위한 매우 효율적이고 시온화되지 않은 도구입니다.
( bore
총 약 400 줄의 안전한 비동기 녹 코드이며 설정하기가 사소한 일입니다. 클라이언트와 서버를위한 단일 바이너리를 실행하십시오.)
MacOS에있는 경우 bore
홈 브루 핵심 공식으로 포장됩니다.
Brew 설치 Bore-Cli
그렇지 않으면 보어를 설치하는 가장 쉬운 방법은 사전 빌드 바이너리입니다. 이들은 MacOS, Windows 및 Linux의 릴리스 페이지에서 사용할 수 있습니다. 플랫폼에 적합한 파일을 압축하고 보어 실행 파일을 bore
의 폴더로 이동하십시오.
Rust 패키지 관리자 인 Cargo를 사용하여 소스에서 bore
뚫을 수도 있습니다. 이 명령은 사용자가 접근 가능한 경로에서 bore
바이너리를 설치합니다.
화물 설치 보어 클리
또한 각 릴리스에 대한 버전의 Docker 이미지도 게시합니다. 이미지는 AMD 64 비트 아키텍처를 위해 만들어졌습니다. 특정 버전으로 태그가 지정되어 있으며 최소한의 "스크래치"컨테이너에서 정적으로 연결된 bore
바이너리를 실행할 수 있습니다.
Docker Run -it --init ---rm --- 네트워크 호스트 Ekzhang/Bore <Args>
이 섹션에서는 bore
CLI 명령에 대한 자세한 사용법을 설명합니다.
bore local
명령을 사용하여 로컬 컴퓨터의 포트를 전달할 수 있습니다. 이는 원격 서버의 주소를 지정하는 --to
옵션뿐만 아니라 위치 인수, 로컬 포트를 전달합니다.
현지 5000을 보어 -보어
이 포트를 사용할 수없는 경우 명령이 실패하지만 노출 할 리모콘의 특정 포트를 선택하기 위해 --port
옵션을 선택적으로 전달할 수 있습니다. 또한 --local-host
통과하면 Loopback 주소 localhost
외에 다른 지역 네트워크에 다른 호스트를 노출시킬 수 있습니다.
전체 옵션은 다음과 같습니다.
원격 서버로 로컬 프록시를 시작합니다 사용법 : 보어 로컬 옵션 [옵션] -<to> <loic_port> 인수 : <local_port> 노출 할 로컬 포트 옵션 : -l,-local-host <host> 노출 할 로컬 호스트 [기본값 : localhost] -t, -to <to> 원격 서버의 주소로 로컬 포트를 [ENV : BORE_SERVER =]에 노출시킵니다. -p, -port <port> 원격 서버의 옵션 포트를 선택하려면 [기본값 : 0] -s, -secret <secry> 인증을위한 비밀의 선택적 비밀 [ENV : BORE_SECRET] -h, -help 인쇄 도움말 정보
시작 지침에서 언급했듯이 bore.pub
에서 실행되는 bore
서버의 공개 인스턴스가 있습니다. 그러나 자신의 네트워크에서 자체 주최자가 bore
원한다면 다음 명령으로 수행 할 수 있습니다.
보어 서버
그게 다야! 서버가 주어진 주소로 실행되기 시작하면 --to <ADDRESS>
으로 bore local
명령을 업데이트하여 로컬 포트를이 원격 서버로 전달할 수 있습니다.
bore server
명령의 전체 옵션은 다음과 같습니다.
원격 프록시 서버를 실행합니다 사용법 : 보어 서버 [옵션] 옵션 : -Min-Port <Min_port> 최소 허용 TCP 포트 번호 [기본값 : 1024, ENV : BORE_MIN_PORT] -MAX-PORT <MAX_PORT> 최대 허용 된 TCP 포트 번호 [기본값 : 65535, ENV : BORE_MAX_PORT] -s, -secret <secry> 인증을위한 비밀의 선택적 비밀 [ENV : BORE_SECRET] -h, -help 인쇄 도움말 정보
7835
에는 내재적 인 제어 포트가 있으며, 주문시 새로운 연결을 생성하는 데 사용됩니다. 초기화시 클라이언트는 TCP 제어 포트의 서버에 "hello"메시지를 선택한 원격 포트를 프록시하도록 요청합니다. 그런 다음 서버는 승인으로 응답하고 외부 TCP 연결을 듣기 시작합니다.
서버가 원격 포트에서 연결을 얻을 때마다 해당 연결에 대한 보안 UUID를 생성하고 클라이언트로 다시 보냅니다. 그런 다음 클라이언트는 서버에 별도의 TCP 스트림을 열고 해당 스트림에 UUID가 포함 된 "수락"메시지를 보냅니다. 그런 다음 서버는 서로의 두 연결을 프록시합니다.
올바른 이유와 메모리 누출을 피하기 위해, 들어오는 연결은 클라이언트가 수락하지 않으면 버려지기 전에 서버에서 최대 10 초 동안 저장됩니다.
bore server
의 사용자 정의 배포에서는 선택적으로 서버가 다른 사람이 사용하는 것을 방지하기 위해 비밀을 요구할 수 있습니다. 이 프로토콜은 클라이언트가 HMAC 코드 형태의 임의의 과제에 응답하여 각 TCP 연결에서 비밀의 소유를 확인해야합니다. (이 비밀은 초기 핸드 셰이크에만 사용되며 기본적으로 더 이상 트래픽이 암호화되지 않습니다.)
# ServerBore 서버의# secret -secret my_secret_string# clientbore local <local_port> -to <to> ---secret my_secret_string
인수에 비밀이 없으면 bore
BORE_SECRET
환경 변수에서 읽으려고 시도합니다.
Eric Zhang (@ekzhang1)에 의해 만들어졌습니다. MIT 라이센스에 따라 라이센스.
저자는 Tokio Project의 기고자와 유지 관리자에게 Rust에 인체 공학적이고 효율적인 네트워크 서비스를 작성할 수 있도록 감사합니다.