ブリッジは、レイヤ2(イーサネット)の代わりにレイヤ3(iP)からデータを転送します。

ブリッジは、レイヤ2(イーサネット)の代わりにレイヤ3(iP)からデータを転送します。

ブリッジとIP netnsで動作するいくつかのスクリプトがあります。以前は、パケットはレイヤ2で転送されていましたが、カーネルをアップグレードした後、カーネルはレイヤ3でパケットを転送するようです。最新のカーネルでは、iptablesテーブルフィルタとチェーンFORWARDをトリガします。転送チェーンにルールを追加するとパケットが一致し、sysctl を介して ip_forward を無効にすると IP パケットは転送されません。しかし、arpパケットが転送されるようです。

その後、仮想マシンにcentos7を構築し、スクリプトを簡素化しました。カーネル5.2.14のレイヤ2ではIPパケットを転送しますが、カーネル5.3.13のレイヤ3ではIPパケットを転送しないことがわかりました。カーネルrpmは以下から得た。193.49.22.109。カーネル5.2でいくつかの変更が見つかりました。カーネルの新機能しかし、転送動作は言及されていません。何が起こったのか知りたいです。それともバグを報告する必要がありますか?

スクリプト例:

#!/bin/bash

DEVICE=enp0s8

date
uname -a
ip net del ns &> /dev/null
ip net add ns
ip l a v1 type veth peer name v2
ip l s v2 netns ns
ip l s ${DEVICE} netns ns
ip a a 192.168.56.22/24 dev v1
ip l s v1 up
ip net exec ns ip l a name br type bridge
ip net exec ns ip l s dev ${DEVICE} master br
ip net exec ns ip l s dev v2 master br
ip net exec ns ip l s dev br up
ip net exec ns ip l s dev ${DEVICE} up
ip net exec ns ip l s dev v2 up
ip net exec ns ip a a 192.168.56.23/24 dev br
ip net exec ns iptables -A FORWARD -j DROP
echo 1 | ip net exec ns tee /proc/sys/net/ipv4/ip_forward > /dev/null
ip nei flush dev v1
ping 192.168.56.1 -c1 &> /dev/null
ping 192.168.56.1 -i1 -c5 
ip net exec ns iptables -L FORWARD -nv

ベストアンサー1

おすすめ記事