Iptables - Chuỗi cầu và chuyển tiếp


14

Tôi đã thiết lập cầu ethernet br0có chứa hai giao diện eth0tap0

brctl addbr br0
brctl addif eth0
brctl addif tap0
ifconfig eth0 0.0.0.0 promisc up
ifconfig tap0 0.0.0.0 promisc up
ifconfig br0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255 

FORWARDChính sách chuỗi mặc định của tôi làDROP

iptables -P FORWARD DROP

Khi tôi không thêm quy tắc sau, giao thông sẽ không đi qua cầu.

iptables -A FORWARD -p all -i br0 -j ACCEPT

Theo tôi hiểu iptableslà chỉ chịu trách nhiệm cho lớp IP.

ebtables phải chịu trách nhiệm lọc lưu lượng trên cầu ethernet.

Vậy tại sao tôi phải thêm quy tắc ACCEPT trong chuỗi FORWARD của iptable?

Câu trả lời:


12

Do mã br-nf có sẵn dưới dạng bản vá cho linux 2.4 và được sử dụng trong linux 2.6:

Mã br-nf làm cho các khung / gói IP được bắc cầu đi qua các chuỗi iptables. Bộ lọc Ebtables trên lớp Ethernet, trong khi iptables chỉ lọc các gói IP.

Vì lưu lượng truy cập bạn đang làm việc là ip, nên iptablescác quy tắc vẫn được áp dụng do br-nf chuyển các gói cầu nối tới iptables.

Đây là một tài nguyên tuyệt vời để đọc về sự tương tác và tài liệu này chi tiết chức năng của mã br-nf , bao gồm cách vô hiệu hóa tất cả hoặc một số chức năng (nghĩa là không chuyển lưu lượng cầu đến iptables).


Các chức năng không hoạt động trên 4.4.0-22-generic (ubfox 16.04), ngay cả sau khi tôi đã làm echo "1" > /sys/devices/virtual/net/br0/bridge/nf_call_arptables. Có ý kiến ​​gì không?
Arie Skliarouk

Trả lời bản thân mình: # Tải br_netfilter modprobe br_netfilter # Add để cai trị chuỗi BROUTING để chuyển tiếp tất cả ipv4 gói để iptables -t ebtables broute -A BROUTING -p ipv4 -i br0 -j thả
Arie Skliarouk



0

Nếu bạn không có nhu cầu sử dụng iptables với cây cầu trên hệ thống của mình, bạn có thể vô hiệu hóa nó vĩnh viễn bằng cách sử dụng một trong các cách sau:

  1. Thêm quy tắc iptables:

iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT

  1. Hoặc chỉnh sửa /etc/sysctl.conf:

net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0

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.