HOST, BRIDGE, GUEST에 고정 IP를 할당하는 방법

HOST, BRIDGE, GUEST에 고정 IP를 할당하는 방법

CentOS 호스트 내에 소규모 가상 네트워크를 구축하여 네트워킹에 대해 배우고 있습니다. 계획을 시작하려면 상단의 지침이 필요합니다.


장면:

CentOS 7 HOST에는 CentOS 7 GUEST가 필요하며, HOST와 GUEST는 각각 서로 다른 고정 공용 IP 주소를 가져야 합니다. 내가 아는 한 이는 호스트 시스템에 브리지를 생성하여 수행됩니다.

HOST 물리적 상자는 이더넷을 통해 게이트웨이 IP 주소를 사용하여 라우터/모뎀에 연결됩니다 12.34.567.8aa. 12.34.567.111, 12.34.567.222, 12.34.567.33312.34.567.444를 포함하여 5개의 공용 고정 IP 주소를 사용할 수 있습니다.12.34.567.555

HOST, BRIDGE 및 GUEST에 대한 고정 공용 IP 주소를 정의하는 방법은 무엇입니까? 3개의 별도 IP 주소가 있어야 합니까? 아니면 HOST와 BRIDGE가 동일한 IP를 가져야 합니까?

현재 HOST에 정의된 IP 주소는 다음과 같습니다. 라우터/모뎀에 대한 HOST 연결은 이고 eno1, BRIDGE는 으로 정의됩니다 br1.

[root@remote-host ~]# ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
    inet 12.34.567.111/29 brd 12.34.567.8xx scope global eno1
       valid_lft forever preferred_lft forever
    inet6 making:this:anonymous scope global dynamic
       valid_lft 414553sec preferred_lft 414553sec
    inet6 making:this:anonymous scope global noprefixroute dynamic
       valid_lft 2419198sec preferred_lft 345598sec
    inet6 making:this:anonymous scope link
       valid_lft forever preferred_lft forever
3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
50: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
    inet 12.34.567.111/29 brd 12.34.567.8xx scope global br1
       valid_lft forever preferred_lft forever
    inet6 making:this:anonymous scope link
       valid_lft forever preferred_lft forever
63: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br1 state UNKNOWN qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
    inet6 making:this:anonymous scope link
       valid_lft forever preferred_lft forever
[root@remote-host ~]#

답변1

~에 따르면libvirt 문서:

LAN에 브리지

이는 정적 유선 네트워크 구성을 사용하는 호스트의 일반 게스트 연결에 권장되는 구성입니다.

가상 머신에서 LAN으로 직접 브리징을 제공합니다. 이는 호스트에 하나 이상의 관리되는 물리적 NIC가 있는 브리지 장치가 호스트에 있다고 가정합니다. 게스트 VM에는 vnetN이라는 이름으로 생성된 연결된 tun 장치가 있으며 이 장치는 이 요소를 사용하여 재정의할 수도 있습니다(대상 요소 재정의 참조). tun 장치는 브리지 바인딩됩니다. IP 범위/네트워크 구성은 LAN에서 사용되는 모든 것입니다. 이는 게스트 가상 머신에 물리적 머신과 마찬가지로 완전한 들어오고 나가는 네트워크 액세스를 제공합니다.

virsh를 사용하여 네트워크 브리지 만들기

~에 따르면RHEL 문서, 다음을 사용하여 인터페이스 기반 브리지 virsh와 같은 브리지를 생성 할 수 있습니다 .br0eth0

# virsh iface-bridge eth0 br0

브리지를 제거하고 싶거나 제거해야 하는 경우 다음을 수행하십시오.

# virsh iface-unbridge br0

네트워크 시작 스크립트 만들기

이것이 원하는 방식으로 작동하지 않으면 init 스크립트를 수동으로 생성/편집하십시오 /etc/sysconfig/network-scripts/. 이 섹션은 다음에서 직접 제공됩니다.libvirt 문서 페이지:

/etc/sysconfig/network-scripts 디렉터리에 두 개의 구성 파일을 생성해야 합니다. 첫 번째 항목(ifcfg-eth0)은 물리적 네트워크 인터페이스를 정의하고 이것이 브리지의 일부가 될 것임을 나타냅니다.

# cat > ifcfg-eth0 <<EOF
DEVICE=eth0
HWADDR=00:16:76:D6:C9:45
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no
EOF

당연히 실제 NIC 주소와 일치하도록 HWADDR을 변경하십시오. 예를 들어 MTU=9000을 사용하여 여기에서 장치의 MTU를 구성할 수도 있습니다.

두 번째 구성 파일(ifcfg-br0)은 브리지 장치를 정의합니다.

# cat > ifcfg-br0 <<EOF
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no
EOF

경고: 라인 TYPE=Bridge는 대소문자를 구분합니다. 대문자 "B"와 소문자 "ridge"가 있어야 합니다.

변경 후 네트워크를 다시 시작합니다(또는 간단히 재부팅).

 # service network restart

마지막 단계는 브리지에서 netfilter를 비활성화하는 것입니다.

 # cat >> /etc/sysctl.conf <<EOF
 net.bridge.bridge-nf-call-ip6tables = 0
 net.bridge.bridge-nf-call-iptables = 0
 net.bridge.bridge-nf-call-arptables = 0
 EOF
 # sysctl -p /etc/sysctl.conf

이는 성능 및 보안상의 이유로 권장됩니다. Fedora 버그 #512206을 참조하세요. 또는 모든 트래픽이 브리지를 통해 전달되도록 iptables를 구성할 수 있습니다.

# echo "-I FORWARD -m physdev --physdev-is-bridged -j ACCEPT" > /etc/sysconfig/iptables-forward-bridged
# lokkit --custom-rules=ipv4:filter:/etc/sysconfig/iptables-forward-bridged
# service libvirtd reload

네트워크 관리자 및 브리징

이것이 여전히 올바른지 확실하지 않지만 NetworkManager브리징은 현재 개발 중이므로 지원되지 않습니다. 따라서 이를 비활성화하고 network서비스를 사용해야 할 수도 있습니다.

# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# service network start

따라서 "브리지" 인터페이스를 생성한 후에는 문서에 설명된 대로 물리적 NIC를 여기에 슬레이브로 설정한 다음 가상 게스트의 구성을 슬레이브로 편집해야 합니다.그것은네트워크 카드는 호스트 컴퓨터의 네트워크 브리지에도 연결됩니다.

...
<devices>
  ...
  <interface type='bridge'>
    <source bridge='br0'/>
  </interface>
  <interface type='bridge'>
    <source bridge='br1'/>
    <target dev='vnet7'/>
    <mac address="00:11:22:33:44:55"/>
  </interface>
  ...
</devices>

완료되면 호스트의 물리적 NIC가 연결된 라우터는 DHCP를 통해 호스트, 게스트 또는 둘 다에 대해 브리지 인터페이스에 주소를 할당합니다.


하나 있다서버 문제 해결 질문이는 게스트 구성을 설정하는 데 도움이 될 수 있습니다. 기본적으로 virsh(을 사용한다고 가정 libvirt) 다음을 수행하십시오.

virsh net-list
virsh net-edit $NETWORKNAME

해당 dhcp섹션을 찾아서 다음과 같이 편집하세요.

<dhcp>
  <range start='192.168.122.100' end='192.168.122.254'/>
  <host mac='52:54:00:6c:3c:01' name='vm1' ip='192.168.122.11'/>
  <host mac='52:54:00:6c:3c:02' name='vm2' ip='192.168.122.12'/>
  <host mac='52:54:00:6c:3c:03' name='vm3' ip='192.168.122.12'/>
</dhcp>

/var/lib/libvirt/dnsmasq/참고: 기존 매핑에 "hosts" 파일이 있을 수 있습니다.

nl /var/lib/libvirt/dnsmasq/myvirtnet.lan.hostsfile 
     1  52:54:00:39:ae:1c,192.168.122.242,minirhel.myvirtnet
     2  52:54:00:9b:0a:42,192.168.122.133,rhel7.myvirtnet
     3  52:54:00:f9:1e:45,192.168.122.134,rhel7.myvirtnet
     4  52:54:00:b0:d5:38,192.168.122.205,redqcow.myvirtnet
     5  52:54:00:af:c4:9c,192.168.122.206,redqcow.myvirtnet

관련 정보