전제:
AP로는 Raspberry Pi 3를 사용하고 있습니다. USB-이더넷 어댑터를 추가했는데 이것이 내 구성입니다.
- eth0(WAN)으로 내장된 eth 포트
- wlan0(LAN, 무선)으로 내장된 Wi-Fi 인터페이스
- USB-이더넷 어댑터(eth1)(LAN, 유선)
wlan0과 eth1을 br0에 성공적으로 연결했습니다.
그런 다음 br0의 장치가 인터넷에 연결할 수 있도록 nat를 설정했습니다. 이 모든 것이 작동합니다.
질문:
이제 신뢰할 수 있는 장치(eth1:0)를 위한 하나의 가상 네트워크와 덜 신뢰할 수 있는 장치(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 인터페이스 는 두 개의 서로 다른 IP 주소를 가진 동일한 인터페이스 eth1이기 때문에 하나의 인터페이스 eth1에서 및 브리지를 생성할 수 없습니다. 유선 네트워크와 스위치가 이를 허용하는 경우 VLAN을 생성할 수 있습니다. 두 개의 VLAN을 생성하면 브리지 및 에 사용할 수 있는 두 개의 서로 다른 인터페이스를 갖게 됩니다.br1
eth1:0
eth1:1
eth1.10
eth1.20
br0
br1