Làm cách nào tôi có thể chuyển hướng lưu lượng truy cập đi đến cổng 80 bằng iptables cục bộ?


19

Tôi đang cố gắng chuyển hướng các cổng cục bộ trên máy Ubuntu của mình bằng cách sử dụng iptables. Tương tự như ủy quyền minh bạch. Tôi muốn bắt bất cứ thứ gì cố gắng rời khỏi hệ thống của mình trên cổng 80 và chuyển hướng nó đến một máy chủ và cổng từ xa.

Tôi có thể đạt được điều này bằng cách sử dụng các chức năng NAT và định tuyến trước iptableskhông?

Câu trả lời:


30

Hãy thử iptablesquy tắc này :

$ sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination IP:80

Ở trên nói với:

  • Thêm quy tắc sau vào bảng NAT ( -t nat).
  • Quy tắc này sẽ được thêm ( -A) vào lưu lượng truy cập đi ( OUTPUT).
  • Chúng tôi chỉ quan tâm đến lưu lượng TCP ( -p tcp).
  • Chúng tôi chỉ quan tâm đến lưu lượng truy cập cổng đích là 80 ( --dport 80).
  • Khi chúng tôi có một trận đấu, hãy nhảy đến DNAT ( -j DNAT).
  • Định tuyến lưu lượng này đến IP @ port 80 ( --to-destination IP:80) của một số máy chủ khác .

DNAT là gì?

DNAT
    This target is only valid in the nat table, in the PREROUTING and OUTPUT 
    chains, and user-defined chains which are only called from those chains.
    It specifies that the destination address of the packet should be modified 
    (and all future packets in  this  connection will also be mangled), and
     rules should cease being examined.

Tài liệu tham khảo


cảm ơn vì điều đó nhưng nó dường như không hoạt động. Tuy nhiên tôi đã tìm thấy cái này không hoạt động.
pjf

sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT - đến đích xx.xx.xx.xx: 3128
pjf

Đó có phải là vì đây là cục bộ và không thông qua một cổng? SNAT của bạn sẽ hoạt động thông qua một cổng?
pjf

@pjf - Tôi tin là như vậy. Tôi đã cập nhật câu trả lời của mình.
slm

@pjf - Tôi đã tìm thấy cả hai quy tắc và đang trong quá trình cập nhật câu trả lời của mình với cả hai. Tôi không chắc bạn đang ở trong tình huống nào.
slm

6

Điều này có thể được thực hiện cụ thể hơn để chỉ hoạt động trên lưu lượng truy cập đến một máy chủ đích cụ thể. Chẳng hạn, khi postfix mắc lỗi và các thư trong hàng đợi muốn được gửi đến một địa chỉ IP cũ.

iptables -t nat -A OUTPUT -p tcp -d {ONLY_TO_THIS_DESTINATION} --dport 25 -j DNAT --to-destination {NEW_IP}:25

4

Điều này có thể cho phép bạn dịch các cổng sang tất cả các địa chỉ IP. Sự khác biệt chính ở đây là sự vắng mặt của một địa chỉ IP trong --to-destinationtrường.

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination :80

Mẹo rất hữu ích; chính xác những gì tôi cần Có cách nào để tăng số cổng không? Giả sử tôi có phạm vi 100 cổng và muốn tăng tất cả chúng bằng một số tiền cụ thể.
Zdenek

Không chắc chắn những gì bạn có ý nghĩa. Bạn có thể viết một vòng lặp for trong Bash?
Felipe Alvarez

Một vòng lặp thêm 100 quy tắc iptables sẽ hoạt động, nhưng nó sẽ làm chậm nó. Tôi muốn có thể bảo nó tăng nhiều cổng liên tiếp trong một quy tắc duy nhất.
Zdenek

@Zdenek Tôi không biết nếu điều đó là có thể với iptables. Bạn đã nhìn firewalldchưa
Felipe Alvarez
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.