Làm thế nào các bảng và chuỗi iptables được duyệt qua


22

Tôi biết linux có 3 bảng dựng sẵn và mỗi bảng có các chuỗi riêng như sau:

LỌC : BẢO QUẢN, KIẾM TIỀN, ĐIỂM

NAT : BẢO QUẢN, VÀO, ĐẦU RA, ĐIỂM

MANGLE : PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

Nhưng tôi không thể hiểu làm thế nào họ đi qua, theo thứ tự, nếu có. Ví dụ: làm thế nào để chúng đi qua khi:

  1. Tôi gửi một gói đến một máy tính trong cùng một mạng cục bộ của tôi
  2. Khi tôi gửi một gói đến một máy tính trong một mạng khác
  3. khi một cổng nhận được một gói và nó phải chuyển tiếp nó
  4. khi tôi nhận được một gói mệnh cho tôi
  5. bất kỳ trường hợp nào khác (nếu có)

Câu trả lời:


28

Wikipedia có một sơ đồ tuyệt vời để hiển thị thứ tự xử lý.

Để biết thêm chi tiết, bạn cũng có thể xem tài liệu iptables, cụ thể là duyệt qua các bảng và chuỗi chương . Mà cũng bao gồm một sơ đồ dòng chảy .

Thứ tự thay đổi phụ thuộc vào cách netfilter đang được sử dụng (như một bộ lọc cầu hoặc mạng và liệu nó có tương tác với lớp ứng dụng hay không).

Nói chung (mặc dù có nhiều ma quỷ hơn trong các chi tiết trong chương được liên kết ở trên), các chuỗi được xử lý như sau:

  • Xem chuỗi INPUT là "lưu lượng truy cập từ bên ngoài đến máy chủ này".
  • Xem chuỗi FORWARD là "lưu lượng sử dụng máy chủ này làm bộ định tuyến" (nguồn và đích không phải là máy chủ này).
  • xem chuỗi OUTPUT là "lưu lượng mà máy chủ này muốn gửi đi".
  • PREROUTING / POSTROUTING có các cách sử dụng khác nhau cho từng loại bảng (ví dụ: đối với các bảng nat, PREROUTING dành cho lưu lượng truy cập SNAT (được định tuyến / chuyển tiếp) và POSTROUTING dành cho lưu lượng truy cập DNAT đi (định tuyến / chuyển tiếp). chi tiết cụ thể.

Các bảng khác nhau là:

  • Mangle là để thay đổi các gói (Loại dịch vụ, Thời gian sống, v.v.) trên truyền tải.
  • Nat là để đưa vào các quy tắc NAT.
  • Nguyên là được sử dụng để đánh dấu và theo dõi kết nối.
  • Bộ lọc là để lọc các gói.

Vì vậy, cho năm kịch bản của bạn:

  1. Nếu máy chủ gửi máy chủ lưu trữ của bạn với iptables, OUTPUT
  2. Như trên
  3. Chuỗi FORWARD (với điều kiện cổng là máy chủ lưu trữ với iptables)
  4. Nếu "tôi" là máy chủ lưu trữ với iptables, INPUT
  5. Nhìn vào các quy tắc chuỗi ở trên (đó là quy tắc chung) và sơ đồ luồng (và điều này cũng thay đổi theo những gì bạn đang cố gắng đạt được với IPTables)

Gần đây tôi cũng đã bắt gặp liên kết này - Stuffphilwrites.com/2014/09/iptables- Processing - streamchart . Có một sơ đồ đẹp ở đó bởi Phil Hagen.
slm

1
Một tài nguyên tốt khác - digitalocean.com/community/tutorials/ .
slm
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.