Ngrok là một nền tảng, sử dụng các tiện ích đã cài đặt, 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. Đồng thời, PC bạn có thể bị NAT và không cần địa chỉ IP tĩnh.
Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
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, ví dụ: bằng cách sử dụng Ngrok, bạn có thể dễ dàng chia sẻ tệp trên PC của mình.
Ngrok là gì?
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ấ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.
Ngrok hoạt động như thế nào?
Khi được cài đặt trên máy tính, Ngork sẽ kết nối với máy chủ theo tunnel riêng đồng thời cung cấp cho bạn một subdomain của ngrok kèm theo Port để kết nối ra ngoài.
Nếu bạn mở địa chỉ này trong trình duyệt web, thì lưu lượng truy cập sẽ được chuyển hướng đến dịch vụ mạng trên máy của bạn hoặc đến bất kỳ địa chỉ nào mà bạn chỉ định.
Ngrok được sử dụng để làm gì?
- Triển khai các trang web mà không cần sử dụng hosting
- Tạo các web hook trên máy tính của bạn để phát triển phần mềm
- NAT port không cần cấu hình trên Router
- Cung cấp địa chỉ cho các thiết bị được kết nối
- Chạy dịch vụ đám mây từ máy tính cá nhân
Cách cài đặt Ngrok trên Kali linux
Để 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.
Website: https://ngrok.com
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 Ngrok
sudo unzip ngrok-stable-linux-amd64.zip
Cài đặt Ngrok
chmod +x ./ngrok ./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.
Ví dụ:
./ngrok authtoken MJHGSkjst2HNWLXui5PM_qCaBq0W2sNFcCa0olTAs
Tham số credits
tham số Credits sẽ in thông tin về tác giả và giấy phép của dự án đó.
Cách sử dụng: ./ngrok credits
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ể mà bạn đã đặt trước
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
Tham số update
Tham số update cập nhật ngrok lên phiên bản mới nhất.
Cách sử dụng: ngrok update [COMMAND OPTIONS] [ARGUMENTS…]
Cập nhật ngrok lên phiên bản mới nhất. Lệnh này kiểm tra dịch vụ web ngrok để tìm các phiên bản mới hơn của ứng dụng client ngrok. Nếu có phiên bản mới hơn, nó sẽ được tải xuống, tệp tải xuống sẽ được xác thực và tệp thực thi hiện tại sẽ được thay thế bằng tệp mới.
Để cập nhật thành công, tệp nhị phân ngrok phải nằm trong thư mục có thể ghi bởi người dùng hiện tại. Nếu bạn đặt ngrok trong PATH hệ thống, bạn có thể cần phải chạy nó với tư cách người dùng root hoặc administrator.
Ví dụ:
Cập nhật ngrok lên phiên bản ổn định mới nhất:
./ngrok update
Cập nhật ngrok lên phiên bản beta mới nhất:
./ngrok update -channel=beta
Cách sử dụng ngrok
Ví dụ về cách chạy ngrok
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.
Cài đặt Ngrok trên Windows
Truy cập trang web chính thức và tải xuống ngrok cho Windows: https://ngrok.com/download
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, ví dụ: chương trình của mình được đặt trong thư mục C:\Users\WTS\Downloads\;
cd C:\Users\WTS\Downloads\
Để kiểm tra, bạn có thể mở bảng trợ giúp bằng lệnh:
.\ngrok -h
Vậy là xong rồi đó. Ngoài ra, bạn cũng có thể tạo server chỉ với 15p bằng github tại đây.