Sự khác biệt giữa PREROUTING và FORWARD trong iptables là gì?


15

Tôi đang cố gắng hiểu hệ thống này hoạt động như thế nào và tôi có vấn đề để hiểu sự khác biệt giữa việc sử dụng NAT PREROUTING hoặc bộ lọc FORWARD. Theo những gì tôi hiểu, PREROUTE có thể gửi gói đến một máy chủ khác, tránh bộ lọc. Nếu NAT có thể xử lý việc này thông qua PREROUTE, mục đích của việc có quy tắc FORWARD trong bộ lọc là gì?

Câu trả lời:


23

Bảng NAT :

Bảng này chỉ nên được sử dụng cho NAT (Dịch địa chỉ mạng) trên các gói khác nhau. Nói cách khác, nó chỉ nên được sử dụng để dịch trường nguồn hoặc trường đích của gói.

Bảng lọc :

Bảng bộ lọc chủ yếu được sử dụng để lọc các gói. Chúng ta có thể ghép các gói và lọc chúng theo bất kỳ cách nào chúng ta muốn. Đây là nơi chúng tôi thực sự hành động chống lại các gói và xem xét những gì chúng chứa và DROP hoặc / CHẤP NHẬN chúng, tùy thuộc vào nội dung của chúng. Tất nhiên chúng tôi cũng có thể lọc trước; tuy nhiên, bảng đặc biệt này là nơi lọc được thiết kế.

Trong Traversing của bảng và chuỗi, chúng ta có thể thấy chuỗi FORWARD của bộ lọc chỉ được truyền qua các gói được chuyển tiếp (các gói đến từ mạng VÀ đi ra mạng), tức là máy tính của bạn hoạt động như một bộ định tuyến, trong khi chuỗi PREROUTING của cả hai được chuyển tiếp gói và gói có đích là máy chủ cục bộ.

Bạn chỉ nên sử dụng PREROUTING của nat để thay đổi địa chỉ đích của các gói và chỉ FORWARD của bộ lọc để lọc (bỏ / chấp nhận gói).

Nếu chúng ta nhận được một gói vào quyết định định tuyến đầu tiên không dành cho chính máy cục bộ, nó sẽ được định tuyến thông qua chuỗi FORWARD. Mặt khác, nếu gói tin được dành cho một địa chỉ IP mà máy cục bộ đang nghe, chúng tôi sẽ gửi gói thông qua chuỗi INPUT và đến máy cục bộ. nhập mô tả hình ảnh ở đây Các gói có thể được định sẵn cho máy cục bộ, nhưng địa chỉ đích có thể được thay đổi trong chuỗi PREROUTING bằng cách thực hiện NAT. Vì việc này diễn ra trước quyết định định tuyến đầu tiên, gói sẽ được xem xét sau khi thay đổi này. Do đó, việc định tuyến có thể được thay đổi trước khi quyết định định tuyến được thực hiện. Xin lưu ý rằng tất cả các gói sẽ đi qua một hoặc đường dẫn khác trong hình ảnh này. Nếu bạn DNAT một gói trở lại cùng một mạng mà nó đến từ đó, nó sẽ vẫn đi qua các chuỗi còn lại cho đến khi nó quay trở lại trên mạng.


5

BẢO QUẢN : Chuỗi này được sử dụng để đưa ra bất kỳ quyết định liên quan đến định tuyến nào trước khi ( PRE ) gửi bất kỳ gói tin nào. Luôn nhớ rằng trong bảng PREROUTING/POSTROUTINGtức là NATcác ACCEPT/DROP/REJECTmục tiêu vv của FILTERbảng mặc định sẽ không hoạt động. Các NATbảng chỉ được sử dụng cho việc quyết định định tuyến. Bạn nên sử dụng PREROUTINGkhi thực hiện bất kỳ quyết định định tuyến nào, tức là các quyết định cần thực hiện trước khi gói sẽ bắt đầu truyền qua mạng. Dưới đây là một ví dụ, chúng tôi đang chuyển hướng bất kỳ lưu lượng truy cập nào vừa đến máy chủ trên cổng 80 đến cổng 8080:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

FORWARD : Như tên cho thấy, FORWARDChuỗi FILTERbảng được sử dụng để chuyển tiếp các gói từ nguồn đến đích, ở đây nguồn và đích là hai máy chủ khác nhau. Vì vậy, như bạn có thể tưởng tượng FORWARDcác quy tắc về cơ bản được sử dụng trên các máy chủ nơi một máy chủ đang gửi / nhận lưu lượng truy cập từ một máy chủ khác thông qua máy chủ. Khi gói được tạo từ máy chủ, chuỗi có OUTPUTnghĩa là lưu lượng đi ra từ chính nó trong khi INPUTchuỗi có nghĩa là các gói chỉ dành cho chính máy chủ. Dưới đây là một ví dụ về FORWARDchuỗi trong đó bất kỳ TCPlưu lượng truy cập nào nhận được trên cổng 80 trên giao diện eth0dành cho máy chủ 192.168.0.4sẽ được chấp nhận và chuyển tiếp tới 192.168.0.4:

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT

Việc bạn sử dụng "máy chủ" có vẻ kỳ lạ. Bảng nào được sử dụng khi phụ thuộc chủ yếu vào các giao diện cục bộ mà gói đã đi vào và dự định thoát.
guntbert

phần nào có vẻ kỳ lạ? tôi đã sử dụng khái niệm máy chủ để biểu thị các bên gửi và nhận ..
heemayl

Tôi đang nói về đoạn FORWARD: bảng đó được sử dụng khi một gói đi qua một giao diện được dành cho giao diện khác (trái ngược với máy chủ cục bộ)
guntbert

oh..ok..tôi hiểu rồi .... ừ tôi nên sử dụng giao diện .... chỉ cần sử dụng máy chủ để dễ hình dung..tôi sẽ thay đổi điều đó khi tôi sẽ ở trước máy tính của mình.
heemayl

@guntbert: chỉ cần có đầu của tôi thẳng. đã không đọc bình luận cuối cùng của bạn đủ cẩn thận. Tôi nghĩ rằng bạn đang nhầm lẫn trong bối cảnh của hai giao diện khác nhau cho FORWARDchuỗi. Khi các gói được truyền từ một máy chủ LAN sang một máy chủ khác của mạng LAN, các gói sẽ đi qua một giao diện duy nhất và chuỗi được sử dụng sẽ FORWARDmặc dù ở đây máy chủ (trung bình) sẽ không hoạt động như một bộ định tuyến theo nghĩa nghiêm ngặt thay vì có thể được coi là một chuyển đổi.
heemayl
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.