Xen 4.6과 Ubuntu 16.04 간의 브리지 네트워크 문제

Xen 4.6과 Ubuntu 16.04 간의 브리지 네트워크 문제

Ubuntu 16.04 및 Xen 4.6에서 Xen 가상화를 설정하려고 합니다.

내 계획은 1개의 개인 네트워크와 외부에서 액세스할 수 있고 개인 네트워크에 연결되어야 하는 공용 IP 주소가 있는 가상 서버를 보유하는 것입니다. 내 호스팅 공급자는 4개의 추가 공용 IP를 제공합니다.

이를 위해 두 개의 브리지를 설정했습니다.

# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.0025907784d4       no              eth0
                                                        vif3.0
                                                        vif3.0-emu
xenbr1          8000.36829b44377f       no              dummy0
                                                        vif3.1
                                                        vif3.1-emu

xenbr0에는 공용 고정 IP가 있고 xenbr1에는 개인 IP(192.168.122.1)가 있습니다.

그런 다음 다음과 같이 가상 머신을 구성했습니다.

vif=[
 'ip=<virtual server public ip>,mac=02:00:00:c1:fb:49,bridge=xenbr0',
 'ip=192.168.122.6,mac=00:16:3E:59:FC:39,bridge=xenbr1'
 ]

192.168.122.6 주소에 제대로 연결할 수 있고 컴퓨터는 192.168.122.1 게이트웨이를 통해 인터넷에 액세스하도록 올바르게 구성되었습니다. 그래서 거기에서는 모든 것이 괜찮습니다.

그런 다음 가상 서버의 /etc/network/interfaces에 공용 IP를 추가했습니다.

auto eth0
iface eth0 inet static
    address <public ip>
    netmask 255.255.255.255
    network <public ip substituting .0 at the end>
    broadcast <public ip>
    hwaddress ether 02:00:00:c1:fb:49

및 내부 네트워크(게이트웨이 포함)

iface eth1 inet static
        address 192.168.122.6
        netmask 255.255.255.0
        network 192.168.122.0
        broadcast 192.168.122.255
        gateway 192.168.122.1

이제 경로는 다음과 같습니다.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.122.1   0.0.0.0         UG    0      0        0 eth1
192.168.122.0   *               255.255.255.0   U     0      0        0 eth1

분명히 서버 자체에서 IP를 ping할 수 있지만 외부나 xen 서버 자체에서는 연결할 수 없습니다.

내가 뭘 잘못했나요?

답변1

내 오류는 개인 네트워크를 통해 모든 트래픽을 라우팅하고 eth1 - xenbr1 - dummy0을 통과하는 것 같습니다. eth1은 개인 네트워크에만 사용할 수 있고 eth0은 일반 트래픽에 사용됩니다.

따라서 가상 머신의 eth1에서 /etc/network/interfaces의 게이트웨이를 제거하십시오.

iface eth1 inet static
        address 192.168.122.6
        netmask 255.255.255.0
        network 192.168.122.0
        broadcast 192.168.122.255

그리고 호스트와 호스트 게이트웨이에 대한 고정 경로를 포함하도록 eth0을 변경합니다(이를 더 단순화하기 위해 개별적으로 2개의 IP가 아닌 전체 범위에 대해 이 작업을 수행할 수 있다고 확신합니다).

iface eth0 inet static
    address 129.x.x.199
    netmask 255.255.255.0
    broadcast 129.x.x.199
    up route add 23.x.x.94 dev eth0
    up route add 23.x.x.254 dev eth0
    up route add default gw 23.x.x.94
    down route del default gw 23.x.x.254
    down route del 23.x.x.94 dev eth0
    down route del 23.x.x.254 dev eth0

또한 이 정의에서 게이트웨이 정의를 제거했습니다. 정적 경로가 추가될 때까지 게이트웨이에 연결할 수 없었습니다(이로 인해 네트워크를 시작할 수 없게 되었습니다).

이제 모든 인터넷 트래픽은 eth0-xenbr0-eth0 브리지를 통해 라우팅되고 개인 트래픽은 eth1-xenbr1-dummy0을 통해 라우팅됩니다.

최종 라우팅 테이블은 다음과 같습니다.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         23.x.x.254 0.0.0.0         UG    0      0        0 eth0
23.x.x.94 *               255.255.255.255 UH    0      0        0 eth0
23.x.x.254 *               255.255.255.255 UH    0      0        0 eth0
129.0.0.0   *               255.255.255.0   U     0      0        0 eth0
192.168.122.0   *               255.255.255.0   U     0      0        0 eth1

도움을 주신 garethTheRed에게 감사드립니다!

관련 정보