Tại sao tường lửa của tôi (iptables) can thiệp vào cây cầu của tôi (brctl)?


11

Tôi thiết lập một cây cầu br0"gắn" với hai giao diện:

  • eth0, giao diện vật lý của tôi được kết nối với mạng LAN thực,
  • vnet0, giao diện ảo KVM (được kết nối với Windows VM).

Và tôi có quy tắc tường lửa duy nhất này trong chuỗi chuyển tiếp:

iptables -A FORWARD -j REJECT

Bây giờ, ping duy nhất đang hoạt động là từ VM đến máy chủ.

Các br0giao diện sở hữu địa chỉ IP của máy chủ của tôi. eth0vnet0không "sở hữu" bất kỳ IP nào, theo quan điểm của máy chủ lưu trữ. Windows VM có cấu hình IP tĩnh.

Nếu thay đổi iptablesquy tắc của tôi thành ACCEPT(hoặc thậm chí sử dụng hạn chế hơn iptables -A FORWARD -o br0 -j ACCEPT), mọi thứ đều hoạt động tốt! (tức là tôi có thể ping bất kỳ máy LAN nào từ VM và ngược lại cũng vậy).

Tất cả các tùy chọn kernel chuyển tiếp IP bị vô hiệu hóa (như net.ipv4.ip_forward = 0).

Vậy, làm thế nào để tường lửa bộ lọc mạng có thể chặn thứ gì đó thậm chí không được kích hoạt?

Hơn nữa, lưu lượng VM - LAN chỉ nên ngụ ý eth0vnet0. Tuy nhiên, có vẻ như cho phép lưu lượng truy cập FORWARD với -o br0"công trình" (mặc dù tôi đã không kiểm tra rất cẩn thận).


Hãy xem từ A đến U & L này của tôi Q: Cài đặt khi sử dụng cầu
slm

1
Sản lượng củasysctl -a | grep bridge-nf
Stéphane Chazelas

@ StéphaneChazelas net.bridge.bridge-nf-call-arptables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-filter-vlan-tagged = 0 net.bridge.bridge-nf-filter-pppoe-tagged = 0
Toto

Câu trả lời:


10

Các bình luận từ Stéphane Chazelas cung cấp các gợi ý để câu trả lời.

Theo Bridge-nf Câu hỏi thường gặp Bridge-nf cho phép iptables, ip6tables hoặc arptables để xem lưu lượng truy cập bắc cầu.

Kể từ phiên bản kernel 2.6.1, có năm mục sysctl để điều khiển hành vi của Bridge-nf:

  • bridge-nf-call-arptables - chuyển lưu lượng ARP bắc cầu cho chuỗi FORWARD của arptables.
  • bridge-nf-call-iptables - chuyển lưu lượng truy cập IPv4 bắc cầu cho chuỗi của iptables.
  • bridge-nf-call-ip6tables - chuyển lưu lượng IPv6 bắc cầu cho chuỗi ip6tables.
  • bridge-nf-filter-vlan-tagged - chuyển lưu lượng ARP / IP được gắn thẻ vlan cho arptables / iptables.
  • net.bridge.bridge-nf-filter-pppoe-tagged - chuyển lưu lượng IP / IPv6 được gắn thẻ pppoe vào các bảng {ip, ip6}

Bạn có thể tắt chặn tường lửa của bộ lọc mạng bằng:

# sysctl -w net.bridge.bridge-nf-call-iptables=0
# sysctl -w net.bridge.bridge-nf-call-ip6tables=0

4
Kể từ Linux 3.18, chức năng nơi iptables xử lý các gói từ cầu có thể bị vô hiệu hóa bằng cách không tải br_netfiltermô-đun. Không có mô-đun được tải cũng có nghĩa là không có /proc/sys/net/bridge/mục.
Lekensteyn

vì Linux kernel 5.3 , tính năng này trở thành trên mỗi không gian tên thay vì toàn cầu.
AB
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.