Chuyển tiếp cổng đơn giản


18

Tôi gặp một chút rắc rối khi tôi đang cố gắng thiết lập proxy ngược và máy chủ thứ hai. Ý tưởng của tôi là đưa tường lửa chuyển tiếp https sang proxy ngược và cổng 29418 (gerrit ssh) đến máy chủ thứ hai. Bây giờ anh chàng IT hợp tác của tôi nói: KHÔNG THỂ! Cả hai cổng đi đến máy chủ 1 hoặc cả hai cổng đi đến máy chủ 2.

Ok, như một công việc xung quanh tôi đã cố gắng thiết lập chuyển tiếp cổng trên proxy ngược của cổng 29418 -> server2: 29418

Chi tiết:

  • Server1 IP: 10.0.0.132 và 192.168.10.2 trên Ubuntu 12.04.2 LTS
  • Server2 IP: 10.0.0.133 và 192.168.10.3 trên Ubuntu 12.04.2 LTS

Bây giờ cả https và cổng 29418 đều đi từ tường lửa đến 10.0.0.132, CNTT cho biết đó là cách duy nhất. :

Vì vậy, vui lòng cho tôi biết cách chuyển tiếp từ 10.0.0.132:29418 -> 192.168.10.3:29418 hoặc 10.0.0.133:29418

Khi tôi đang làm việc trên 10.0.0.132, tôi có thể kết nối với cả 10.0.0.133:29418 và 192.168.10.3:29418 để các cổng được mở.

- Cập nhật -

Iptables của tôi -t nat -L trông như thế này:

root @ dev: / root # iptables -t nat -L
XỬ LÝ Chuỗi (CHẤP NHẬN chính sách)
đích đích chọn nguồn tham gia
DNAT tcp - bất cứ nơi nào dev.example.com tcp dpt: 29418 đến: 10.0.0.133

Chuỗi INPUT (CHẤP NHẬN chính sách)
đích đích chọn nguồn tham gia

Đầu ra chuỗi (CHẤP NHẬN chính sách)
đích đích chọn nguồn tham gia

XÁC NHẬN Chuỗi (CHẤP NHẬN chính sách)
đích đích chọn nguồn tham gia
root @ dev: / root # cat / Proc / sys / net / ipv4 / ip_forward
1

Câu trả lời:


32

Trong trường hợp người khác đang tìm kiếm một cách thực sự hoạt động. Mặc dù @HorsePunchKid đúng trong đề xuất của anh ấy, tôi đã tìm thấy hướng dẫn này điền vào các bước còn thiếu:

http: //www.debfox.org/how-to-redirecting-network-traffic-to-a-new-ip-USE-iptables/

Về bản chất:

Cho phép chuyển tiếp IP:

sysctl net.ipv4.ip_forward=1

Thêm quy tắc chuyển tiếp của bạn (sử dụng nnnn: port):

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.132 --dport 29418 -j DNAT --to-destination 10.0.0.133:29418

Hỏi IPtables để hóa trang:

iptables -t nat -A POSTROUTING -j MASQUERADE

Và đó là nó! Nó làm việc cho tôi trong mọi trường hợp :)


1
Đây là câu trả lời tốt nhất tôi tìm thấy về chủ đề này.
Victor Piousbox

Mất kết nối từ container Docker của tôi sau khi sử dụng giải pháp này. Phải xóa quy tắc. Quy tắc đã hoạt động, nhưng mất tất cả lưu lượng truy cập khác. Tôi không khuyên bạn điều này.
Dyin

iptables -t nat -A POSTROUTING -j MASQUERADEOH WOW ... đó là nó, cảm ơn bạn! Đã dành hàng giờ tìm kiếm trên web và tìm ra. Điều này rất đơn giản và hoạt động.
tômwagon

7

Nếu bạn đã cài đặt iptables vào ngày 10.0.0.132, tôi nghĩ việc này sẽ khá đơn giản:

iptables -t nat -A PREROUTING -j DNAT -d 10.0.0.132 -p tcp --dport 29418 --to 10.0.0.133

Điều này nói rằng gửi lưu lượng đến 10.0.0.132 trên cổng 29418 thay vì 10.0.0.133, trên cùng một cổng, trước bất kỳ định tuyến nào khác mà 10.0.0.132 có thể cố gắng thực hiện. Nếu bạn chạy lệnh này và gặp sự cố với nó, hãy thay thế cờ -A bằng -D để xóa nó.

Nếu bạn đang tìm cách để quy tắc này tự động chạy khi 10.0.0.132 khởi động, hãy xem xét thêm lệnh trên dưới dạng quy tắc "đăng ký" trong / etc / network / giao diện.


Đó chính xác là những gì tôi đã làm nhưng nó không hoạt động. Tôi đã bỏ ghi chú net.ipv4.ip_forward = 1 in /etc/sysctl.conf nhưng tôi vẫn gặp lỗi khi kết nối với 10.0.0.132:29418
mở ra

6

Nếu bất cứ ai tìm kiếm một phương pháp tạm thời, hãy thử giải pháp dưới đây.

    ssh -L 192.168.0.10:8080:10.0.0.10:80 root@10.0.0.10

Lệnh trên chuyển hướng tất cả các kết nối đến cổng 8080 trên máy cơ sở của bạn thành 80 cổng của máy ảo. Bạn có thể kiểm tra hoạt động bằng cách truy cập trang web http://192.168.0.10:8080 và nó sẽ hiển thị cho bạn trang web trên máy khách.

Điều này áp dụng cho tất cả các cổng :)


0

Cuối cùng, tôi đã phải cài đặt pfSense làm bộ định tuyến bên trong máy chủ ESXi của mình để định tuyến lưu lượng đến các máy ảo khác nhau vì tôi không thể làm cho nó hoạt động trong Ubuntu.

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.