Làm thế nào để định tuyến địa chỉ cụ thể thông qua một đường hầm?


14

Có một số trang web / dịch vụ nhất định mà tôi chỉ có thể truy cập từ mạng con nơi đặt máy chủ của tôi (nghĩ về kịch bản mạng nội bộ điển hình). Có cách nào để định tuyến lưu lượng truy cập trong suốt đến các địa chỉ này thông qua một đường hầm SSH không?

Hãy xem xét các thiết lập sau:

Máy tính xách tay của tôi được kết nối trên mạng gia đình. Nó không thể truy cập trực tiếp các dịch vụ trên ips X và Y. Tôi có một đường hầm SSH đến một máy chủ trên mạng con thực sự có thể truy cập các dịch vụ này.

Tôi bằng cách nào đó có thể tự động đóng gói tất cả lưu lượng truy cập vào các mạng con của X và Y để đi qua đường hầm này mà không phải chạy toàn bộ giải pháp VPN sẽ gửi tất cả lưu lượng truy cập của tôi qua máy chủ không? Nói cách khác: tất cả lưu lượng truy cập vào bất kỳ mạng con nào khác vẫn phải đi trực tiếp từ máy tính xách tay mà không đi qua máy chủ (sử dụng đường hầm).

Câu trả lời:


6

Bạn có thể chỉ định giao diện thông qua đó để định tuyến lưu lượng trong bảng định tuyến:

sudo route add <host.com> -interface <ppp0>

Trong đó host.com là tên máy chủ hoặc ip mà bạn muốn truy cập thông qua giao diện và ppp0 là định danh liên kết cho vpn của bạn được hiển thị bằng ifconfiglệnh.


2
Lưu ý: ít nhất trên Ubuntu -interfacekhông phải là một tùy chọn routevì vậy đề xuất trên đưa ra lỗi sử dụng. Ngoài ra, làm thế nào điều này sẽ dẫn đến việc định tuyến qua đường hầm ssh như OP yêu cầu?
arielf

3

Các phiên bản gần đây của OpenSSH hỗ trợ các thiết bị mạng điều chỉnh / chạm để hỗ trợ VPN thực sự. Xem https://help.ubfox.com/community/SSH_VPN để biết một số tài liệu cơ bản (rõ ràng là dành cho Ubuntu, nhưng nguyên tắc cơ bản được áp dụng ở nơi khác.)


Lưu ý rằng điều này đòi hỏi quyền root trên cả máy tính xách tay và máy chủ cổng.
Riccardo Murri

1

Tuyên bố miễn trừ trách nhiệm: Tôi chưa thực sự kiểm tra những gì tôi sẽ mô tả, và thực sự nó có thể hoàn toàn sai, nhưng câu hỏi của bạn rất hấp dẫn đến nỗi tôi không thể cưỡng lại sự cám dỗ để đưa ra câu trả lời. :-) Ngoài ra, thiết lập ở đây phụ thuộc vào một số iptableschức năng chỉ có thể tồn tại trên Linux.

Giả sử bạn muốn kết nối từ máy tính xách tay của mình đến một cổng cụ thể P1 trên máy chủ X1, đến cổng P2 trên máy chủ X2, v.v. - Tôi sẽ mô tả cách định tuyến lưu lượng TCP đến các cặp máy chủ + cổng cụ thể này thông qua một đường hầm SSH. Lưu ý: các địa chỉ IP X1, X2, v.v. là các địa chỉ IP của máy chủ được nhìn thấy từ máy chủ cổng (địa chỉ bạn SSH vào).

  1. Chọn một số cổng cục bộ không sử dụng L1 (ví dụ 10000), L2 (ví dụ 10001), v.v ... Cổng L1, L2, ..., phải khác biệt và số lượng của chúng phải bằng số lượng máy chủ riêng biệt (Xn, Pn) + cặp cổng.

  2. Sử dụng iptablesđể chuyển hướng các gói được chuyển hướng đến Xn: Pn lên localhost: Ln

    iptables -t nat -A OUTPUT -p tcp -d X1 --dport P1 -j DNAT - đến đích localhost: L1 iptables -t nat -A OUTPUT -p tcp -d X2 --dport P2 -j DNAT - đến địa phương localhost: L2

  3. Bây giờ SSH đến cổng, sử dụng -Ltùy chọn để lưu lượng truy cập từ localhost: Ln đến (Xn, Pn):

    ssh gateway.server -L localhost: L1: X1: P1 -L localhost: L2: X2: P2 ...

Thí dụ:

# access webserver.intranet (port 80) through localhost:10080
iptables -t nat -A OUTPUT -p tcp -d webserver.intranet --dport 80 -j DNAT --to-destination localhost:10080
ssh gateway.server -L locahost:10080:webserver.intranet:80

Hãy cẩn thận:

  • nó chỉ hoạt động cho TCP, nếu nó hoạt động hoàn toàn ...

  • nếu bạn muốn truy cập nhiều hơn một máy chủ, có lẽ việc thiết lập VPN sẽ ít tốn công hơn

  • Có thể vẫn dễ dàng hơn khi sử dụng -Dtùy chọn SSH để mô phỏng proxy SOCKS và tạo đường hầm cho tất cả lưu lượng truy cập của bạn thông qua đó.


Nó thực sự hoạt động! (Đáng buồn thay, nó không phù hợp với tình huống cụ thể của tôi, nơi tôi muốn định tuyến lưu lượng truy cập bắt nguồn từ một máy ảo chứ không phải từ localhost.)
pvgoran

1

mạng con của X và Y đi qua đường hầm này mà không phải chạy toàn bộ giải pháp VPN sẽ gửi tất cả lưu lượng truy cập của tôi qua máy chủ?

Những gì bạn muốn là định nghĩa của VPN.

VPN không nên

gửi tất cả lưu lượng [của bạn] thông qua máy chủ?

Nếu có, nó không được thiết lập đúng.

Theo định nghĩa, bất kỳ máy nào bạn cố gắng truy cập thông qua Đường hầm hoặc VPN, theo định nghĩa, không thể truy cập qua Internet. Vì vậy, chỉ có địa chỉ có thể định tuyến không cần Internet nên được chuyển xuống VPN.

Nếu bạn có một tình huống phức tạp hơn, như chỉ có máy X và Y và không có gì khác. Nhân viên CNTT của bạn có thể đặt chúng trên mạng con cho bạn. Sau đó, trên máy khách của bạn, chỉ định tuyến mạng con đó xuống VPN.


0

Tôi bằng cách nào đó có thể tự động đóng gói tất cả lưu lượng truy cập vào các mạng con của X và Y để đi qua đường hầm này mà không phải chạy toàn bộ giải pháp VPN sẽ gửi tất cả lưu lượng truy cập của tôi qua máy chủ không?

Điều này hơi lạ ngay từ cái nhìn đầu tiên bởi vì đó là những gì VPN sẽ làm cho bạn. SSH có xu hướng là một vấn đề điểm-điểm, ý tưởng là bạn kết nối một cổng trên máy cục bộ của mình với cổng của một máy từ xa ở nơi khác; nó thực sự không được thiết kế cho loại lưu lượng mà bạn hình dung.

Nói cách khác: tất cả lưu lượng truy cập vào bất kỳ mạng con nào khác vẫn phải đi trực tiếp từ máy tính xách tay mà không đi qua máy chủ (sử dụng đường hầm).

Một lần nữa, VPN sẽ đảm nhận việc đó.

Nếu bạn lo lắng về một giải pháp "nặng ký" để có được lưu lượng truy cập VPN an toàn (nghĩa là bạn không muốn sử dụng nó vì nó quá phức tạp), bạn thực sự nên xem OpenVPN , nó sẽ thực hiện chính xác những gì bạn đang mô tả. Nó không chỉ gói gọn tất cả lưu lượng, mà còn có thể được thực hiện theo cách chỉ lưu lượng truy cập dành cho các mạng con đó sẽ thực hiện chuyến đi qua đường ống VPN. Tôi sẽ cảnh báo bạn rằng bạn vẫn sẽ cần chỉnh sửa tệp văn bản trên (các) máy cục bộ và từ xa, nhưng nó khá dễ để chạy.

Vì mục đích của bạn, vì bạn không muốn nhóm ở giữa (máy chủ) nhìn thấy lưu lượng truy cập của mình, bạn sẽ thiết lập VPN để kết nối trực tiếp từ máy của bạn với máy từ xa. Bất kỳ gói định tuyến nào cũng sẽ được mã hóa trước khi rời khỏi máy tính xách tay của bạn, vì vậy bạn sẽ có phạm vi bảo hiểm 100% từ đầu đến cuối.


0

Như những người khác đã nói, nếu bạn phải "đóng gói tất cả lưu lượng truy cập vào mạng con", thì có lẽ bạn muốn sử dụng VPN.

Tuy nhiên, để truy cập chỉ một vài dịch vụ, bạn có thể muốn sử dụng tính năng chuyển tiếp cổng cục bộ của SSH, điều này thực sự đơn giản. Ví dụ: nếu bạn nhập (từ máy tính xách tay của bạn):

ssh -N -L 3333:localhost:2222 jump_box

sau đó kết nối với localhost:2222, sẽ giống như kết nối localhost:2222từ jump_box. Bạn có thể sử dụng nhiều tùy chọn -L cùng một lúc và bạn có thể kết nối với các dịch vụ trên các máy chủ khác nếu ssd_config bật jump_boxcho phép.

Bạn có thể sử dụng autosshvới systemdhoặc tương tự để giữ cho các đường hầm luôn hoạt động.

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.