Sự khác biệt giữa DNAT và REDIRECT trong IPTABLES


14

Được rồi, có thể là do tôi dày đặc hoặc có thể chỉ là không tìm đúng nguồn, nhưng tôi không thể hiểu tại sao một trong những thiết lập IPTABLES này lại tốt hơn các thiết lập khác.

Đây là thiết lập của tôi:

Tôi có một hộp phục vụ như một proxy trong suốt và bộ định tuyến hoặc sắp xếp. Nó có hai giao diện trên đó, ETH0 và ETH1 và sơ đồ địa chỉ sau:

ETH0 = DHCP ETH1 = 192.168.5.1/24 phục vụ DHCP cho mạng 192.168.5.0/24 cho các máy khách phía sau mạng LAN

Tôi đã cài đặt và nghe trên cổng 8080 như một proxy trong suốt. Những gì tôi đang thực hiện với thiết lập này là có thể thả hộp này vào một mạng hiện có với cấu hình tối thiểu và các máy khách được gắn vào proxy.

Đây là tập tin IPTABLES ban đầu của tôi

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

Cấu hình này hoạt động tốt và lưu lượng đang chảy qua lại mà không có vấn đề. Tôi nhận được địa chỉ IP của khách hàng gốc trong các tệp dữ liệu riêng tư và cuộc sống rất tốt.

Sự bối rối của tôi xuất hiện khi tôi bắt đầu nhìn vào cấu hình của người khác và thấy rằng họ đang sử dụng DNAT thay vì GIẢM, và tôi đang cố gắng tìm hiểu về lợi ích thực sự của người này. Đây là một cấu hình mẫu:

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to 192.168.5.1:8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

Một lần nữa, cấu hình này cũng hoạt động và cung cấp cho tôi tất cả những gì tôi cần từ góc độ đăng nhập ...

Cái nào đúng, hoặc có thể THÊM đúng hơn cái kia?

Cảm ơn đã dành thời gian để đọc đến nay ...

Câu trả lời:


14

REDIRECTthay đổi địa chỉ IP đích để gửi đến máy. Nói cách khác, các gói được tạo cục bộ được ánh xạ tới địa chỉ 127.0.0.1. Đó là để chuyển hướng các gói địa phương. Nếu bạn chỉ muốn chuyển hướng lưu lượng giữa các dịch vụ trên máy cục bộ thì đó sẽ là một lựa chọn tốt.

DNATdịch địa chỉ mạng thực tế . Nếu bạn muốn các gói tin bên ngoài hệ thống cục bộ bị thay đổi đích, thì đó là lựa chọn tốt hơn cho cả hai, vì REDIRECTsẽ không hoạt động.


được rồi, vì vậy nếu tôi có một khách hàng ngồi sau proxy, hãy nói trên 192.168.5.234 và tôi muốn "xử lý" các yêu cầu HTTP của nó thông qua proxy trên 192.168.5.1, bạn đang đề xuất rằng tôi nên chuyển đổi lưu lượng truy cập cổng 80 sang 192.168 .5.1: 8080 trên proxy. Tôi có thể mua cái đó, nhưng TẠI SAO ???? Đây có phải là một cái gì đó để xử lý lưu lượng được xử lý khi nó rời khỏi ETH0 của proxy trên đường ra thông qua cổng mặc định tới Internet không? Tôi cần phải
mò mẫm

2
DNAT thay đổi địa chỉ khi gói đi qua tường lửa để nó đến máy chủ bị bỏ qua và ngược lại dường như đến từ tường lửa. DNAT gần như không bao giờ áp dụng cho lưu lượng truy cập đi ra ngoài, được xử lý theo quy tắc MASQUERADE. Đó là privateproxy trên một máy chủ khác, sau đó DNAT sẽ phù hợp, với một ngoại lệ thích hợp cho máy chủ đó.
BillThor

Bill, cảm ơn bạn. Đó là nơi bộ não bò sát của tôi đã đi, nhưng nó luôn luôn tốt đẹp để có xác nhận. Vì vậy, nếu tôi gửi một gói định mệnh cho google.com từ 192.168.5.234 và nó có gw mặc định là 192.168.5.1 (eth1 trên proxy), tôi nên "GIẢM" gói đó sang cổng 8080 trên proxy và để privateoxy làm phần còn lại Lý do cho điều này là vì privateoxy sống trên 192.168.5.1 chứ không phải trên một máy chủ khác. Tôi có đang hút thứ gì đó không nên?
QWade

9

REDIRECTkhông thay đổi địa chỉ IP đích để gửi đến chính máy như được trả lời bởi Warner @. Nhưng tôi muốn nói rằng câu trả lời không hoàn toàn chính xác, hoặc một chút sai lệch.

REDIRECTkhông chỉ để chuyển hướng các gói địa phương. Nó thực sự là DNATđịa chỉ IP đích sử dụng là ẩn, 127.0.0.1 nếu đó là gói cục bộ hoặc địa chỉ IP của giao diện máy nếu không, 192.168.5.1 trong trường hợp OP.

Vì vậy, trong câu hỏi này, bất kể đích đến cuối cùng là gì, các gói đầu tiên phải đến proxy, vì vậy REDIRECThoàn toàn phù hợp.

REDIRECTbạn không cần chỉ định địa chỉ IP, nên nó sẽ chỉ lấy đúng địa chỉ, nó có một số lợi thế hơn DNAT:

  • Nếu địa chỉ IP của máy thay đổi vì bất kỳ lý do gì bạn không cần phải sửa đổi quy tắc của mình và đặc biệt DNATsẽ không hoạt động đối với các giao diện do DHCP kiểm soát.

  • Bạn có thể viết và duy trì các quy tắc giống nhau cho một số hệ thống (ví dụ một số ví dụ proxy) mà không giữ các phiên bản hơi khác nhau do các địa chỉ IP cụ thể.


bằng cách nào đó như snat / giả trang.
Jichao

@Hod, tôi nghe thấy REDIRECT là một trường hợp đặc biệt của DNAT, nhưng tôi sử dụng REDIRECT và TOR biết đích đến thực sự của một gói, vì vậy tôi kết luận daddr và dport của cấu trúc iphdr và tcphdr vẫn còn nguyên nhân. DNAT sẽ thực sự sửa đổi các cấu trúc. Tôi có lầm không?
bấc
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.