Có thể yêu cầu máy chủ của tôi chuyển tiếp các yêu cầu trong một cổng cụ thể đến một trang web không?


0

Có một trang web mà tôi chỉ có thể truy cập từ một vài địa chỉ IP được liệt kê trong danh sách trắng. Hãy gọi nó là xyz.com. Hơn nữa, xyz.com chỉ cho phép kết nối qua https.

Tôi cũng có một máy chủ Debian 8.10 có địa chỉ IP tĩnh là một trong những IP được liệt kê trong danh sách trắng và tôi có một tên DNS được thiết lập cho nó. Hãy nói rằng đó là myserver.biz.

Những gì tôi muốn làm là kết nối với myserver.biz trên một phần cụ thể (giả sử 12345) và gửi yêu cầu tới xyz.com để nó thực sự có được trang web đó và sẽ không có bất kỳ vấn đề SSL nào mà tôi có thể Không tạo ra ngoại lệ cho.

Nỗ lực đầu tiên của tôi là sử dụng iptablestrên máy chủ của mình để chuyển tiếp một cách minh bạch tất cả các yêu cầu đến trên cổng 12345 đến địa chỉ IP của máy chủ xyz.com trên cổng 443. tức là:

iptables -t nat -A PREROUTING -p tcp --dport 12345 -j DNAT --to <xyz.com's server IP>:443
iptables -t nat -a POSTROUTING -d <xyz.com's server IP> -j MASQUERADE

Điều này gần như đã làm việc, nhưng không hoàn toàn. Nếu tôi trỏ trình duyệt của mình tới myserver.biz:12345, nó sẽ không hoạt động vì xyz.com đang lưu trữ chia sẻ và máy chủ sẽ không xử lý yêu cầu của tôi như thể tôi đang kết nối với xyz.com.

Tuy nhiên, nếu tôi chỉnh sửa tệp máy chủ của máy tính để xyz.com phân giải thành địa chỉ IP tĩnh của máy chủ của tôi và sau đó trỏ trình duyệt của tôi tới xyz.com:12345, nó sẽ hoạt động. Vì vậy, nó giúp tôi trở thành một phần trong đó, nhưng nó chỉ hoạt động trên các hệ thống mà tôi có thể truy cập tệp máy chủ và tôi cần nó để hoạt động trên các hệ thống mà tôi không thể làm điều đó (ví dụ: thiết bị iOS).

Vì vậy, tóm lại, tôi cần:

  • yêu cầu tới myserver.biz:12345 để được chuyển tiếp đến xyz.com:443
  • tên máy chủ của yêu cầu được chuyển tiếp để chỉ định xyz.com để nó sẽ được giải quyết chính xác bởi máy chủ của xyz'com
  • và địa chỉ IP nguồn của yêu cầu được chuyển tiếp là địa chỉ IP của máy chủ được liệt kê trong danh sách của tôi

Có cách nào tôi có thể thực hiện điều này?

Cập nhật:

Tôi đã và đang làm việc nginxđể sử dụng để làm điều này và trong khi tôi đã cố gắng để máy chủ của mình chuyển tiếp đến nhiều trang web khác nhau, tôi không thể làm cho nó hoạt động với trang web tôi cần! Nó liên tục tạo ra một "502: Cổng xấu". Tôi không chắc điều gì sẽ xảy ra.

Cập nhật số 2:

Tôi đã quản lý để có được nginxhầu hết làm việc. Thủ thuật là cập nhật nó lên phiên bản ổn định mới nhất và đưa proxy_ssl_server_name on;vào định nghĩa máy chủ của tôi. Tuy nhiên, bây giờ có một vấn đề trong đó một số hình ảnh trên xyz.com không tải với trạng thái 403.

Có vẻ như 403 là do máy chủ đang cố gắng ngăn chặn liên kết nóng. Không chắc chắn làm thế nào để giải quyết điều đó tại thời điểm này ...


1
Có vẻ như bạn đang mô tả một máy chủ proxy ngược . Một ví dụ như vậy là nginx.
Bạch tuộc

Tôi đã cố gắng thiết lập nginx trong một giờ qua và không thể làm cho nó hoạt động như mô tả trong câu hỏi của tôi. Nếu bạn có thể cung cấp và tư vấn hoặc giúp đỡ, tôi chắc chắn sẽ đánh giá cao nó.
GuyGizmo

1
@Tim_Stewart Đừng lo lắng, tôi biết điều đó. Tôi đang dự định làm một cái gì đó như hạn chế quyền truy cập vào ngnix bằng địa chỉ IP hoặc yêu cầu tối thiểu mật khẩu an toàn. Thật không may, tôi không thể sử dụng VPN cho việc này, vì một số thiết bị tôi đang kết nối đã sử dụng VPN và địa chỉ IP của VPN đặc biệt không được liệt kê trong trang web mà tôi đang cố gắng kết nối.
GuyGizmo

@Tim_Stewart Tôi không kiểm soát VPN, vì đây là dịch vụ VPN để ẩn danh lưu lượng truy cập web. Nhưng vâng, ý tưởng là các hệ thống sử dụng VPN đó có thể kết nối với máy chủ của tôi, điều này sẽ chuyển hướng lưu lượng truy cập đến trang web mục tiêu để nó đến từ một IP được liệt kê trong danh sách trắng.
GuyGizmo

@Tim_Stewart Một số thiết bị sử dụng VPN của tôi và cần kết nối với trang web này là thiết bị iOS. Bạn có biết có thể thiết lập điều đó trên iOS không?
GuyGizmo

Câu trả lời:


3

Tôi đã quản lý để làm việc này bằng cách sử dụng proxy ngược, cụ thể nginx. Sau khi thực hiện một số thử nghiệm, tôi thấy rằng những gì tôi cần làm là thiết lập nó với chứng chỉ SSL và sau đó sử dụng proxy_passtính năng của nó để chuyển tiếp đến trang web mong muốn của tôi. Phiên bản đơn giản nhất trong cấu hình của tôi (đã loại trừ các phần SSL) là:

server {
    listen 12345;
    proxy_ssl_server_name on;

    location /some_path/ {
        proxy_pass https://example.com/;
        proxy_set_header Referer "https://example.com";
    }
}

Tôi thiết lập một chứng chỉ tự ký bằng nửa đầu của hướng dẫn này . Nó là cần thiết để bao gồm proxy_ssl_server_name on;như không làm như vậy nginxsẽ thất bại với một 502: Bad Gatewaylỗi.


Thật tuyệt, bây giờ sẽ là thời điểm tốt để bảo mật nó!
Tim_Stewart

@Tim_Stewart Tôi đang tự hỏi nên sử dụng cơ chế bảo mật nào. Tôi có thể sử dụng auth cơ bản, nhưng điều đó có nhược điểm là phải nhập tên người dùng và mật khẩu mỗi khi tôi sử dụng proxy. (iOS không có tùy chọn để nhớ các mật khẩu đó!) Vì trang web tôi đang ủy quyền đã yêu cầu đăng nhập và mật khẩu, bạn có nghĩ rằng sẽ đủ để đặt locationcấu hình máy chủ nginx thành một chuỗi dài ngẫu nhiên nhân vật?
GuyGizmo

Tôi sẽ nghĩ rằng phạm vi auth hoặc IP cơ bản. Tôi biết người dùng / pass rất tệ, nhưng thật đáng buồn là điều đó không phải lúc nào cũng ngăn cản nỗ lực. Hầu hết các dịch vụ VPN đã tách biệt bạn khỏi các tài khoản máy khách VPN khác, tôi sẽ thử nó với IP và theo dõi nhật ký.
Tim_Stewart
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.