前提:
APにはRaspberry Pi 3を使用しています。 USB-Ethernetアダプタを追加しましたが、これは私の設定です。
- eth0(WAN)として組み込まれたethポート
- wlan0(LAN、無線)で内蔵されたWi-Fiインターフェース
- USB-イーサネットアダプタ(eth1)(LAN、有線)
wlan0とeth1をbr0に正常に接続しました。
その後、br0のデバイスがインターネットに接続できるようにnatを設定しました。これはすべてうまくいきます。
質問:
これで、信頼できるデバイス(eth1:0)用の1つの仮想ネットワークと信頼性の低いデバイス(eth1:1)用の別の仮想ネットワークがあるように、有線LANを分割しようとしています。
アイデアはbr0にeth1:0だけを追加することです。これはうまくいくようですが、ブリッジを一覧表示すると、br0は仮想インターフェイスeth1:0の代わりにeth1を直接使用するようです。
実際に別のブリッジ(br1)を作成して別の仮想ネットワーク(eth1:1)を追加しようとすると、インターフェイスがすでにブリッジにあるというエラーが発生します。
したがって、仮想インターフェイスはブリッジに追加できず、親インターフェイスにのみ追加できるようです。
これは本当ですか?別の方法がありますか?
これは私が使用するテストスクリプトです。
function configure_firewall() {
echo CONFIGURE FIREWALL START
####################### FORWARDING #####################
# Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Allow forwarding of traffic LAN -> WAN
iptables -A FORWARD -i ${BRIDGE} -o ${WAN} -j ACCEPT
# Allow traffic WAN -> LAN but only as reply to communication initiated from the LAN
iptables -A FORWARD -i ${WAN} -o ${BRIDGE} -m state --state RELATED,ESTABLISHED -j ACCEPT
# Drop anything else
iptables -A FORWARD -j DROP
####################### MASQUERADING ########################
# Do the nat
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
###################### INPUT #############################
# Allow local connections
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i ${BRIDGE} -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -i ${WAN} -j ACCEPT
iptables -A INPUT -i ${WAN} -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -j DROP
###################### OUTPUT #############################
iptables -A OUTPUT -j ACCEPT
echo CONFIGURE FIREWALL END
}
function teardown_bridge() {
echo TEARDOWN BRIDGE START
ifconfig ${BRIDGE} down
brctl delif ${BRIDGE} ${LAN}:0
brctl delif ${BRIDGE} ${WIFI}
brctl delbr ${BRIDGE}
echo TEARDOWN BRIDGE END
}
function configure_bridge() {
echo CONFIGURE BRIDGE START
brctl addbr ${BRIDGE}
brctl addif ${BRIDGE} ${LAN}:0
brctl addif ${BRIDGE} ${WIFI}
ifconfig ${BRIDGE} up 192.168.10.1 netmask 255.255.255.0 broadcast 192.168.10.0
echo CONFIGURE BRIDGE END
}
function configure_interfaces() {
echo CONFIGURE INTERFACES START
ifconfig ${LAN} up 0.0.0.1
ifconfig ${LAN}:0 up 0.0.0.2
ifconfig ${LAN}:1 up 0.0.0.3
echo CONFIGURE INTERFACES END
}
function teardown_interfaces() {
echo TEARDOWN INTERFACES START
ifdown ${LAN}:1
ifdown ${LAN}:0
ifdown ${LAN}
echo TEARDOWN INTERFACES END
}
function delayed_reset() {
for i in `seq 15 -1 0`; do
sleep 1
echo ${i}
done
sync
reboot
exit
}
#test_network
#if [ $? -ne 0 ] ; then
teardown_firewall
teardown_bridge
teardown_interfaces
configure_interfaces
configure_bridge
configure_firewall
#delayed_reset
#fi
スクリプトを実行した後、次をifconfig
実行すると仮想ネットワークが存在するようです。
eth1 Link encap:Ethernet HWaddr 00:13:3b:62:11:f6
inet addr:0.0.0.1 Bcast:255.255.255.255 Mask:0.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:30712 errors:0 dropped:0 overruns:0 frame:0
TX packets:19110 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5261152 (5.0 MiB) TX bytes:5355909 (5.1 MiB)
eth1:0 Link encap:Ethernet HWaddr 00:13:3b:62:11:f6
inet addr:0.0.0.2 Bcast:255.255.255.255 Mask:0.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1:1 Link encap:Ethernet HWaddr 00:13:3b:62:11:f6
inet addr:0.0.0.3 Bcast:255.255.255.255 Mask:0.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
しかし、すべては次のeth1
とおりですbr0
。
root@raspberrypi:/home/pi# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00133b6211f6 no eth1
wlan0
これはこれを確認するようです:
root@raspberrypi:/home/pi# brctl addbr br1
root@raspberrypi:/home/pi# brctl addif br1 eth1:1
device eth1:1 is already a member of a bridge; can't enslave it to bridge br1.
メモ: 私は見たLinuxでの仮想ネットワークインタフェースの作成とブリッジしかし、iproute2を参照しているので古いようです。
答え1
br0
eth1インターフェイスは2つの異なるIPアドレスを持つ同じインターフェイスeth1であるため、1つのインターフェイスeth1でブリッジを作成できません。有線ネットワークとスイッチがそれを許可している場合は、VLANを作成できます。 2つのVLANを作成すると、ブリッジと使用可能な2つの異なるインターフェイスがあります。br1
eth1:0
eth1:1
eth1.10
eth1.20
br0
br1