Ngrok là gì?

Ngrok là một nền tảng cho phép bạn truy cập từ xa vào web server hoặc một số dịch vụ khác chạy trên PC. Truy cập thông qua tunnel được tạo khi ngrok chạy. Ngrok đưa các dịch vụ trên máy tính lên internet, ngay cả khi bạn không có địa chỉ IP Public tĩnh, nằm sau NAT và tường lửa.

Với Ngrok, bạn không cần phải thử nghiệm dự án ở một môi trường khác, bạn có thể thử nghiệm dự án cho khách hàng trực tiếp từ máy cục bộ hoặc có thể dễ dàng chia sẻ tệp trên PC của mình.

Với ngrok, bất kỳ Port nào trên máy tính cũng đều có thể truy cập được từ Internet thông qua tunnel. Ví dụ: bạn có thể làm cho web server trên local của mình có thể truy cập được từ Internet thông qua liên kết trực tiếp mà không cần cấu hình.

Cách cài đặt Ngrok trên Kali linux

Tham khảo tại trang chủ: https://ngrok.com/download

Để cài đặt ngrok trên Kali Linux, trước tiên chúng ta cần phải tải xuống Ngrok từ terminal.

sudo wget `curl -s https://ngrok.com/download | grep -o -E 'https://bin.equinox.io/c/[A-Za-z0-9]{4,}/ngrok-stable-linux-amd64.zip''

Giải nén và cài đặt Ngrok

sudo unzip ngrok-stable-linux-amd64.zip
chmod +x ./ngrok
./ngrok -h

Cài đặt Ngrok trên Windows

Truy cập trang web chính thức và tải xuống ngrok cho Windows

Giải nén tệp lưu trữ đã tải xuống, mở cmd và đi đến thư mục có tệp thực thi bằng lệnh cd

cd C:\Users\WTS\Downloads\

Để kiểm tra, bạn có thể mở bảng trợ giúp bằng lệnh:

.\ngrok -h

Các lệnh trên Ngrok

Thiết lập Ngrok Authtoken

tham số authtoken lưu trữ mã xác thực trong file config.

Cách sử dụng: ngrok TOKEN [COMMAND OPTIONS] [ARGUMENTS…]

Lệnh authtoken sửa đổi tệp config của bạn để ghi authtoken được chỉ định vào nó. Theo mặc định, tệp config này được đặt tại $HOME/.ngrok2/ngrok.yml .

Để sử dụng nhiều tính năng nâng cao của dịch vụ, ngrok.com yêu cầu bạn phải đăng ký tài khoản. Để liên kết khách hàng của bạn với một tài khoản, họ phải gửi secret token đến dịch vụ ngrok.com khi khởi động. Thay vì gửi authtoken cho mọi lần call, bạn có thể sử dụng lệnh này để lưu trữ nó trong file config để ứng dụng client luôn xác thực bạn đúng cách.

Tham số https

Tham số http tạo một HTTP tunnel.

Cách sử dụng: ngrok http [COMMAND OPTIONS] [ARGUMENTS…]

Mô tả:

Tạo một tunnel lắng nghe lưu lượng HTTP/HTTPS với hostname được chỉ định. HTTP Host header trên các request công khai được kiểm tra để xác định tunnel phù hợp với nó.

Endpoints HTTPS chấm dứt lưu lượng TLS trên máy chủ ngrok bằng cách sử dụng chứng chỉ ngrok.io. Lưu lượng HTTP được giải mã sau đó sẽ được định tuyến qua một secure tunnel và đến local server của bạn. Nếu bạn không muốn lưu lượng truy cập TLS của mình kết thúc trên máy chủ ngrok, hãy sử dụng tunnel TLS hoặc TCP.

Ví dụ:

  • Chuyển hướng subdomain ngrok.io đến local port 80: ngrok http 8080
  • Chuyển hướng lưu lượng truy cập đến example.com:9000: ngrok http example.com:9000
  • Yêu cầu tên subdomain bar.ngrok.io: ngrok http -subdomain=bar 80
  • Yêu cầu tunnel ex.com (DNS CNAME): ngrok http -hostname=ex.com 1234
  • Yêu cầu xác thực cơ bản trên tunnel endpoint: ngrok http -auth=’falken:joshua’ 80
  • Viết lại Host header thành ex.com: ngrok http -host-header=ex.com 80
  • Cho phép truy cập từ Internet vào các tệp cục bộ trong /var/log: ngrok http file:///var/log
  • Chuyển hướng đến máy chủ https cục bộ: ngrok http https://localhost:8443

Tham số start

tham số start bắt đầu một tunnel theo tên từ file config.

Cách sử dụng: ngrok start [COMMAND OPTIONS] [ARGUMENTS…]

Lệnh Ngrok start tạo các tunnel theo tên từ file config. Bạn có thể chỉ định bất kỳ số lượng tên tunnel nào. Bạn có thể bắt đầu tất cả các tunnel từ file config bằng cách thêm tham số -all.

Ví dụ:

  • Chạy một tunnel có tên trong file config là dev: ngrok start dev
  • Chạy các tunnel “web” và “blog”: ngrok start web blog
  • Chạy tất cả các tunnel được xác định trong file config: ngrok start –all

Tham số tcp

Tham số tcp bắt đầu một tunnel TCP.

Cách sử dụng: ngrok tcp [COMMAND OPTIONS] [ARGUMENTS …]

Lệnh TCP khởi chạy một tunnel chuyển hướng tất cả lưu lượng TCP từ public port đến địa chỉ local. Điều này cực kỳ hữu ích để cung cấp các dịch vụ chạy trên lưu lượng truy cập không phải HTTP (ssh, sip, rdp, game servers,…).

Một tunnel TCP liên kết một địa chỉ public trên một máy chủ ngrok từ xa. Bất kỳ dịch vụ nào yêu cầu địa chỉ public ổn định nên sử dụng tham số –remote-addr. ngrok.com yêu cầu bạn đặt trước địa chỉ tunnel TCP cho tài khoản của mình trước khi bạn sử dụng nó.

Ví dụ:

  • Chuyển tiếp cổng tới máy chủ ssh cục bộ của bạn: ngrok tcp 22
  • Cung cấp máy chủ RDP tại một địa chỉ public cụ thể: ngrok tcp –remote-addr=1.tcp.ngrok.io:27210 3389

Tham số Tls

Tham số tls bắt đầu một tunnel TLS.

Cách sử dụng: ngrok tls [COMMAND OPTIONS] [ARGUMENTS …]

Lệnh tls bắt đầu một tunnel để lắng nghe lưu lượng TLS trên cổng 443 với tên máy chủ được chỉ định. TLS SNI (Server Name Indication) trên kết nối với TLS được kiểm tra để xác định nó phù hợp với tunnel nào.

Máy chủ ngrok không chấm dứt các kết nối TLS được chuyển tiếp bằng lệnh này. Bất kỳ giao thức cơ bản nào cũng có thể được sử dụng. Theo tùy chọn, bạn có thể chỉ định một cặp key và chứng chỉ TLS sẽ được sử dụng để chấm dứt lưu lượng truy cập phía client trước khi nó được chuyển tiếp. Nếu không được chỉ định, lưu lượng gửi sẽ được mã hóa.

Việc sử dụng lệnh này chỉ được khuyến nghị với tùy chọn -hostname. Các mục đích sử dụng khác sẽ hoạt động, nhưng sẽ luôn dẫn đến cảnh báo chứng chỉ không khớp.

Ví dụ:

  • Chuyển tiếp lưu lượng truy cập TLS cho example.com đến cổng 443 (yêu cầu CNAME): ngrok tls -hostname=example.com 443
  • Chuyển tiếp lưu lượng truy cập TLS tới subdomain (cảnh báo chứng chỉ không khớp): ngrok tls 1234
  • Chấm dứt lưu lượng truy cập TLS cho t.co trước khi chuyển tiếp: ngrok tls -hostname=t.co -crt=/path/to/t.co.crt -key=/path/to/t.co.key 443

Một số cách sử dụng Ngrok

Chạy ngrok server

Tạo tunnel từ subdomain đã tạo có thể truy cập thông qua liên kết public tới cổng cục bộ 80 (web server):

ngrok http 80

Ngay sau khi khởi chạy, bạn có thể thấy rằng dịch vụ đã tạo subdomain tạm thời có dạng c68c9c03db47.ngrok.io để cung cấp quyền truy cập vào PC và local tại 127.0.0.1:4040, một bảng điều khiển đã được khởi chạy hiển thị dữ liệu về các kết nối từ xa tới tunnel. Chúng ta có thể mở domain c68c9c03db47.ngrok.io từ bất kỳ đâu và có quyền truy cập vào thư mục được định cấu hình trên web server.

Chỉ định Tunnel đến HOST: PORT (foo.dev:80) thay vì localhost:

ngrok http foo.dev:80

Làm cho local HTTPS server có thể truy cập được từ internet:

ngrok http https://localhost

Tunnel lưu lượng TCP tùy ý đến cổng 22:

ngrok tcp 22

Tạo tunnel (http) đến trang kalitut.com bằng giao thức https (https://kalitut.com) bằng cách thay thế header Host HTTP bằng kalitut.com(-host-header = kalitut.com):

ngrok http https://kalitut.com -host-header=kalitut.com

Nếu bạn định sử dụng server thường xuyên, bạn nên đăng ký trên ngrok.com, lấy mã authorization và thêm nó vào local client bằng lệnh:

ngrok authtoken 5vEpKbBvnjSrMqZIkYJLb_2sbNRQbxZm0PSo23X6QpQ

authorization sẽ được ghi vào tệp ~/.ngrok2 /ngrok.yml.

Proxy cho các PC khác trên mạng local

Không cần thiết phải giữ máy chủ web trên cùng một máy mà Ngrok chạy. Nếu dịch vụ trên mạng cục bộ đang chạy trên một máy riêng biệt, chúng ta có thể ủy quyền lưu lượng truy cập ở đó:

ngrok http 192.168.1.25:8080

Không chỉ làm việc với web server

Trên thực tế, chúng ta có thể cấu hình quyền truy cập từ xa vào bất kỳ dịch vụ tcp nào đang chạy trên PC. Ví dụ: nếu chúng ta muốn truy cập qua SSH, chúng ta có thể làm như sau:

ngrok tcp 22

Đồng thời, từ dịch vụ chúng ta sẽ nhận được một địa chỉ có dạng tcp: //0.tcp.ngrok.io: 18211 -> localhost: 22, và để truy cập vào PC chúng ta chỉ cần kết nối qua SSH vào tên máy 0.tcp.ngrok.io và cổng 18211. Các bạn cũng có thể làm thế với game server.

Leave a Reply

This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.