Trong hầu hết các trường hợp, bạn sẽ không thể thực hiện kết nối trong khi sử dụng Dữ liệu di động do CGNAT và tường lửa ở cấp độ ISP, như acejavelin đã giải thích trong nhận xét. Để biết chi tiết vấn đề và cách khắc phục sự cố, hãy xem Cách kết nối với Android thông qua SSH qua IP công cộng 3G / 4G?
Tuy nhiên, nếu bạn có thể liên lạc với điện thoại của mình từ internet, việc mở rộng quyền truy cập này đến máy chủ được kết nối (PC trong trường hợp của bạn) không phải là vấn đề. Chuyển tiếp cổng được thực hiện với các bộ định tuyến và khi được sử dụng làm điểm phát sóng Wi-Fi (hoặc kết nối với USB), điện thoại của bạn thực tế hoạt động như một bộ định tuyến.
GIẢI PHÁP ROOT:
Để chuyển tiếp cổng, bạn cần thực hiện Dịch địa chỉ đích ( DNAT ) bằng công cụ không gian người dùng tường lửa dựng sẵn của nhân Linux iptables
.
Trước tiên, hãy đảm bảo rằng kernel được cấu hình để chuyển tiếp lưu lượng truy cập internet (đã được đặt khi hotspot được BẬT):
~# echo 1 >/proc/sys/net/ipv4/ip_forward
Giả sử địa chỉ IP được gán bởi hotspot cho PC là 192.168.43.10
và bạn muốn chuyển tiếp cổng mặc định SSH ( 22
):
~# iptables -t nat -I PREROUTING -p tcp --dport 22 -j DNAT --to 192.168.43.10
Đây là hình thức đơn giản nhất của Chuyển tiếp cổng.
Nếu CHÍNH SÁCH mặc định của chuỗi FORWARD trong bảng LỌC không được CHẤP NHẬN, hãy xác định rõ các quy tắc để chấp nhận các gói được chuyển tiếp:
~# iptables -I FORWARD -p tcp -d 192.168.43.10 --dport 22 -j ACCEPT
Cũng chấp nhận lưu lượng chuyển tiếp đi nếu cần.
GIẢI PHÁP KHÔNG ROOT:
Trên các thiết bị chưa root, bạn có thể sử dụng adb
hoặc một số máy chủ TCP / UDP tối thiểu khác như netcat
hoặc socat
để chuyển tiếp cổng. Lưu ý rằng điều này sẽ không hoạt động cho các cổng dưới 1024 . Để chuyển tiếp cổng 2222
:
~$ adb reverse tcp:2222 tcp:2222
Hoặc trên điện thoại:
~$ nc -lk -p 2222 -e nc 192.168.43.10 2222
* nc
là một applet busybox. Nhưng chắc chắn rằng bạn sẽ có được nhị phân đúng, có nhiều triển khai của netcat
.
* Sử dụng -u
tùy chọn để chuyển tiếp cổng UDP.
Tuy nhiên, nc
chỉ chấp nhận một kết nối duy nhất tại một thời điểm. Sử dụng socat
hoặc ncat
cho các tùy chọn nâng cao hơn, ví dụ từ Termux:
~$ socat tcp-l:2222,fork,reuseaddr tcp:192.168.43.10:2222
Xem Sử dụng netcat để chuyển tiếp cổng .
Ngoài ra còn có các ứng dụng như Fwd (đó là nguồn mở, tôi không có liên kết) có nghĩa là để chuyển tiếp cổng.
NGUỒN: