Làm thế nào để xâu chuỗi proxy SOCKS?


10

Lời nói đầu: Những gì tôi đang tìm kiếm là các hướng dẫn rõ ràng, có cùng định dạng như trên. Đó là, một cái gì đó giống như chạy: 1999, ra lệnh chạy X trên máy A, sau đó ra lệnh Y trên máy B.

Tôi có một proxy vớ làm việc từ máy tính xách tay của tôi (máy A) đến máy B:

[A]$ ssh -ND 8888 B

Tôi có thể thiết lập Firefox để sử dụng proxy SOCKS trên cổng cục bộ của A 8888và duyệt trên A hoạt động. Càng xa càng tốt.

Nhưng tôi cũng có một proxy vớ giữa máy B và C:

[B]$ ssh -ND 8157 C

Vì vậy, tôi có thể duyệt trên B như thể tôi đang trên C, thiết lập Proxy B Firefox vớ để 8157.

Có cách nào để xâu chuỗi hai proxy để tôi có thể sử dụng Firefox cục bộ (trên A) trong khi sử dụng kết nối với C không?

Đó là, bằng cách nào đó, chuyển tiếp tất cả các yêu cầu của Firefox từ A đến C. A và C không thể gặp nhau trực tiếp, nhưng tôi có quyền truy cập SSH đầy đủ ở mọi nơi. Tất cả các máy đều là Debian.

Lưu ý rằng tôi không muốn chuyển tiếp một cổng như cổng 80 nhưng tôi muốn proxy SOCK được xâu chuỗi hoàn toàn .


bạn không nên làm -L 8888:B:8157trên [A]?
bdecaf

@bdecaf Ngoài các lệnh đã cho? Thay thế? Không có thay đổi nào đối với cài đặt FireFox?
dùng124114

Chỉ cho [A]. Phần còn lại như bạn mô tả.
bdecaf

ssh -L 8888:B:8157thất bại, yêu cầu một tham số tên máy chủ. Bạn có thể đưa ra một câu trả lời đầy đủ hơn, từ đầu đến cuối không? Nếu nó hoạt động, tôi sẽ chấp nhận.
dùng124114

B thực sự là tên của máy của bạn?
bdecaf

Câu trả lời:


12

Chỉ cần xác nhận điều này đã làm việc với một số máy ảo:

[A]$ ssh -tt -v -L8888:localhost:8157 user@B ssh -t -D 8157 user@C

Từ A , bạn mở một cổng chuyển tiếp đường hầm từ 8888 tại địa phương để 8157 trên B -L8888:localhost:8157 . Một khi bạn đã thiết lập một kết nối đến B, lệnh từ xa ssh -t -D 8157 user@Cđang chạy, cung cấp SOCKS proxy của bạn thông qua C . Từ những gì tôi đã đọc, '-t' dường như là bắt buộc, mặc dù tôi vẫn phải tìm hiểu tại sao.

Lưu ý, đây là một lệnh trên máy chủ đầu tiên mà gọi ssh hai lần, từ A-> B và từ B-> C . Bạn cũng có thể chia điều này thành các lệnh riêng biệt, như được mô tả dưới đây.

Phần thưởng: cho chuỗi ba proxy ...

I E A->B->C->D->Internet

[hostA]$ ssh -2 -C -D 55557 -L 55556:127.0.0.1:55556 -L 55555:127.0.0.1:55555 user@B
[hostB]$ ssh -2 -C -D 55556 -L 55555:127.0.0.1:55555 user@C
[hostC]$ ssh -2 -C -D 55555 user@D

Lưu ý rằng với mỗi bước nhảy, bạn cần một công cụ chuyển tiếp phù hợp bổ sung -Ltrên các máy chủ trước đó trong chuỗi.

Người giới thiệu:


Dịch, từng dòng: - 1. Tạo cổng động chuyển tiếp từ máy chủ B trên 57, Tiếp xúc cổng 56 từ B, hiển thị cổng 55 từ B. - 2. Tạo cổng động chuyển tiếp trên cổng 56 từ máy chủ C, Tiếp xúc cổng 55 Từ C - 3. Tạo một cổng động chuyển tiếp trên cổng 55 từ máy chủ D - Kết quả cuối cùng là một proxy proxy từ mọi máy chủ, thông qua SSH ở mỗi bước. Các cổng 57 đến 55 sẽ chứa các proxy có điểm cuối tại B, C và D.
Ray Foss

Bạn có proxy ssh miễn phí nào không? Tôi chưa tìm thấy.
aemrid

4

Câu trả lời tuyệt vời của glallen sử dụng SSH sẽ hoàn thành công việc. Tuy nhiên, cách thích hợp để thực hiện điều này là sử dụng proxychainschương trình. ProxyChains là một công cụ mạnh mẽ cho phép bạn dễ dàng tận dụng nhiều máy chủ proxy cùng một lúc. Ví dụ, nó được sử dụng bởi tin tặc sử dụng để che giấu danh tính của chúng trong khi thực hiện các cuộc tấn công internet - bằng cách kết nối một loạt các proxy trên khắp thế giới, hầu như không có nhà điều tra pháp y nào có thể theo dõi lưu lượng truy cập suốt từ đó. Không phải nói rằng bạn là một hacker độc hại - nó sẽ hoạt động cho nhiều trường hợp sử dụng khác nhau. ;)

ProxyChains được cài đặt theo mặc định trên một số bản phân phối Linux (như Kali Linux). Ví dụ, trên Ubuntu / Debian, bạn có thể dễ dàng cài đặt nó bằng cách thực hiện:

  • sudo apt-get install proxychains

Proxychains tìm kiếm một tập tin cấu hình tại /etc/proxychains.conf. Khi bạn đã cài đặt xong, hãy sao lưu tệp cấu hình Proxychains hiện có (nếu nó tồn tại) và tạo một tệp mới:

  • mv /etc/proxychains.conf /etc/proxychains-backup.conf
  • nano /etc/proxychains.conf

Bây giờ, dán vào cấu hình ví dụ này mà tôi đã viết cho bạn:

strict_chain

proxy_dns

tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks4          192.168.1.1     8888
socks4          192.168.1.2     8157
socks4          192.168.1.3     6969

Trong ví dụ này, 192.168.1.1là địa chỉ IP của máy chủ proxy SOCKS đầu tiên, 8888là cổng mà proxy SOCKS đầu tiên đang nghe, 192.168.1.2là địa chỉ IP của máy chủ proxy SOCKS thứ hai, 8157là cổng mà proxy SOCKS thứ hai đang nghe, và kể từ đó trở đi.

Bây giờ, tận dụng proxychains bằng cách thực hiện proxychains firefoxtừ dòng lệnh để khởi chạy Firefox. (Đảm bảo rằng Firefox được đóng trước.) Bây giờ, bất cứ khi nào Firefox tạo kết nối đi, chương trình proxy sẽ đóng gói lưu lượng sao cho nó sẽ được ủy quyền thông qua tất cả các máy chủ mà bạn đã chỉ định trong tệp cấu hình này. Để rõ ràng, trong tùy chọn Firefox của bạn, bạn không nên chỉ định BẤT K server máy chủ proxy nào - proxy sẽ đảm nhiệm mọi thứ phía sau hậu trường.

Lưu ý rằng, với mục đích khắc phục sự cố, có lẽ bạn nên thử làm cho nó hoạt động bằng cách sử dụng 1 proxy tại một thời điểm trước khi thử tất cả 3 .;)

Người giới thiệu:


Chuỗi proxy có thiết lập proxy cho bạn không? hoặc chỉ giúp bạn kết nối với các proxy hiện có?
glallen

Proxychains sẽ chỉ kết nối với các máy chủ proxy hiện có.
James

Nếu đó là trường hợp, thì tôi không đồng ý với cụm từ "cách thích hợp để ..." vì câu hỏi nói riêng về việc thiết lập các proxy để xâu chuỗi trên nhiều máy, không chỉ hướng firefox đến các proxy hiện có. Có lẽ - "một phương pháp thay thế, một khi các proxy được đặt đúng chỗ" sẽ có nhiều thông tin, mà không ngụ ý rằng sử dụng ssh thẳng là bằng cách nào đó không đúng . Thông tin cơ bản bổ sung tốt tuy nhiên. Cảm ơn. Chỉnh sửa và bạn sẽ có upvote của tôi.
glallen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.