>

전제 :

라즈베리 파이 3을 AP로 사용하고 있습니다. 이더넷 어댑터에 USB를 추가했는데 다음과 같은 구성입니다.

  • eth 포트에 eth0 (WAN)으로 구축
  • Wlan0 (LAN, 무선)으로 WiFi 인터페이스 내장
  • eth1 (LAN, 유선)으로 이더넷 어댑터에 연결

wlan0과 eth1을 br0 브리지로 성공적으로 브리지했습니다.

그런 다음 br0의 장치가 인터넷에 연결되도록 nat을 설정했습니다. 이 모든 것이 작동합니다.

문제 :

이제 유선 LAN을 분리하여 신뢰할 수있는 장치에 대한 가상 네트워크 (eth1 : 0)와 신뢰할 수없는 장치에 대한 다른 가상 네트워크 (eth1 : 1)가 있도록하고 싶습니다.

아이디어는 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

그러나 pyzwyz 전체   eth1 에있는 것 같습니다 :

br0

그리고 이것은 그것을 확인하는 것 같습니다 :

root@raspberrypi:/home/pi# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.00133b6211f6       no              eth1
                                                        wlan0

참고 : Linux에서 가상 네트워크 인터페이스 생성 및 브리지를 살펴 보았습니다. 그러나 iproute2와 관련하여 사용되지 않는 것 같습니다.

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.
  • 답변 # 1

    br0 를 만들 수 없습니다  그리고 br1   eth1:0 때문에 하나의 인터페이스 eth1에 브릿지  그리고 eth1:1  두 개의 다른 IP 주소를 가진 동일한 인터페이스 eth1입니다. 유선 네트워크 및 스위치가 허용하는 경우 VLAN을 생성 할 수 있습니다. 두 개의 VLAN을 생성하면  그리고 eth1.10  당신은 두 개의 서로 다른 인터페이스를 가질 것입니다, 마녀 다리에 사용할 수 있습니다  그리고 eth1.20 .

    br0

관련 자료

  • 이전 linux - 이것을 어떻게 부릅니까?/var/log/messages의 bash [146155]
  • 다음 text processing - awk를 사용하여 특정 열 조건을 인쇄하는 방법은 무엇입니까?