etc/network/interfaces で構成された Debian システム、現状
ブリッジ「br0」には2つの物理イーサネットインターフェイスがあります。 eth0(WAN側、ISPモデム/ルーターに接続)eth1(LAN側、物理スイッチに接続)
eth0とeth1の間のトラフィックは、IPtablesファイアウォールとSuricataをIPSに渡します。この設定は現在うまく機能します。
では、Linuxコンテナを介してこの設定に「pi-hole」を追加したいと思います。 Linux コンテナには、仮想イーサネットインターフェイスを追加するには仮想ブリッジが必要です。
だから私は以下を達成したいと思います:
仮想ブリッジ "br0" - eth0 を使用 (WAN)
<-->
仮想ブリッジ「lanbr0」への接続 - eth1(LAN)の使用 - veth0(LXCの仮想イーサネットインターフェース)の使用
これにより、後で必要に応じて「lanbr0」ブリッジにさらにインターフェイスを追加できます。
編集する 次のコマンドを使用してこれを実行できます。 ip link add veth0 type veth Peer name veth1
次に、veth0 を br0 に追加し、veth1 を lanbr0 に追加し、すべてのインターフェイスをインポートし、eth1 を br0 から lanbr0 に移動します。
しかし、/etc/network/interfacesを介してこれをどのように実行しますか? (下図のように起動中にロードしますか?)
答え1
仮想デュアルインターフェイスを具体的に扱う規定はありませんtype veth
。したがって、いくつかのはんだ付けは主に以下を使用して行われた。pre-up
オプション。ここで、veth0
およびを維持しましたが、別の名前(たとえば、および)をveth1
選択することを検討する必要があります。これは、指定されていない場合(たとえば)デフォルトで選択された名前であり、競合する可能性があるためです。veth-br0
veth-lanbr0
ip link add type veth
veth
インターフェースの場合:
iface veth0 inet manual
pre-up ip link add veth0 type veth peer name veth1 || :
hwaddress 02:00:00:01:00:00
iface veth1 inet manual
pre-up ip link add veth1 type veth peer name veth0 || :
hwaddress 02:00:00:01:00:01
これにより、両方のインターフェイスのいずれかを起動したときに両方のインターフェイスがアクティブになります。|| :
ピアインターフェイスはすでに「その他」インターフェイスによって設定されているため、ここでは失敗しません。内部状態の理由から、ifup
どちらか一方を上げると、もう一方が現れても、最終的には両方が発生するはずです。これは目的の用途に応じてオプションでありhwaddress
、とにかく他の正しい値に設定できます。ブリッジは最初のスレーブインターフェイスのMACアドレスを取得します。
さて、橋で試してみてください。すべての設定を提供するわけではありません(実際には提供していないため)。veth
関連部分のみを提供します。私が推測できないものと私がXXXX
どこに置いたかを調整する必要があります...
。inet XXXX
inet manual
inet static
inet dhcp
auto br0
iface br0 inet XXXX
pre-up ifup veth0
bridge_ports eth0 veth0
...
auto lanbr0
iface lanbr0 inet XXXX
pre-up ifup veth1
bridge_ports veth1 eth1
address xx.xx.xx.xx
netmask 255.255.255.0
...
(注)ifup vethX
内部にコマンドを追加しました。それ以外の場合は、インターフェイスが存在しないと文句を言い、このインターフェイスなしでブリッジを起動して完了したと見なします。すでに論理的な(状態を意味する)インターフェイスを呼び出すことはエラーではないため、ここでは|| :
使用する必要はありません。ifupdown
欠落している部分が完成したら、その部分を別の設定ファイル/etc/network/interfaces.d
(または設定ファイルではない/etc/network/interfaces
)に入れると機能します。
最初に機能しない場合は、すべてのインターフェイスを論理的に終了し(論理的にはを使用することを意味しますifdown
)、もう一度やり直してください。これは、誤った論理状態が原因で一部のインターフェイスが正しく(再)構成されていないためです。
また、NetworkManagerなどの他のネットワークマネージャと対話することもできます。特定のインターフェイスを無視することを許可するオプションがありますが、これはこの回答の範囲外です。
答え2
参考までに、以下は完全なインターフェーススクリプトです(一部のアドレスにはxxが追加されています)。
# The loopback network interface
auto lo
iface lo inet loopback
# IPv4 address
auto enp8s0
iface enp8s0 inet manual
offload-gro off
offload-lro off
auto enp0s31f6
iface enp0s31f6 inet manual
iface veth0 inet manual
pre-up ip link add veth0 type veth peer name veth1 || :
hwaddress 02:00:00:01:00:00
iface veth1 inet manual
pre-up ip link add veth1 type veth peer name veth0 || :
hwaddress 02:00:00:01:00:01
# Bridge setup
auto br0
iface br0 inet static
pre-up ifup veth0
bridge_ports enp8s0 veth0
bridge_fd 0
bridge_maxwait 0
address 192.168.xx.xx
broadcast 192.168.xx.xx
network 192.168.xx.xx
netmask 255.255.255.0
gateway 192.168.xx.xx
dns-nameservers xx.xx.xx.xx xx.xx.xx.xx
auto lanbr0
iface lanbr0 inet manual
pre-up ifup veth1
bridge_ports veth1 enp0s31f6
もう一度ありがとう AB