브리지 인터페이스가 인터넷에 액세스할 수 없습니다.

브리지 인터페이스가 인터넷에 액세스할 수 없습니다.

QEMU 가상 머신을 실행하려고 하는데 인터넷에 액세스할 수 없고 호스트 머신과 Docker 네트워크에만 액세스할 수 있습니다.

내가 뭘 한거지:

  1. 브리지가 생성됩니다 brctl addbr virbr0.
  2. 열어 봐: ip link set up dev virbr0;
  3. IP 할당: ip addr add 192.168.66.1/24;
  4. 업데이트된 QEMU 구성: echo "allow virbr0" >> /etc/qemu/bridge.conf;
  5. 가상 설치를 실행합니다:

    virt-install \
      --name centos67 \
      --memory 1024 \
      --vcpus=1,maxvcpus=2 \
      --cpu host \
      --cdrom $HOME/Downloads/CentOS-6.7-x86_64-minimal.iso \
      --disk size=4,format=raw \
      --network bridge=virbr0
    

그런 다음 복구 이미지를 부팅하고 네트워크를 구성했습니다.

IP 주소: 192.168.66.2/24

게이트웨이: 192.168.66.1

그게 다입니다. 이 시점에서는 호스트 시스템과 Docker 네트워크에만 액세스할 수 있지만 인터넷에는 액세스할 수 없습니다(따라서 ping 8.8.8.8은 실패합니다).

다음은 이 문제를 해결하는 데 도움이 될 수 있는 일부 호스트 유틸리티의 출력입니다.

$ brctl showstp virbr0
virbr0
 bridge id              8000.fef8a25ccef1
 designated root        8000.fef8a25ccef1
 root port                 0                    path cost                  0
 max age                  19.99                 bridge max age            19.99
 hello time                1.99                 bridge hello time          1.99
 forward delay            14.99                 bridge forward delay      14.99
 ageing time             299.99
 hello timer               0.00                 tcn timer                  0.00
 topology change timer     0.00                 gc timer                 167.03
 flags


tap0 (1)
 port id                8001                    state                forwarding
 designated root        8000.fef8a25ccef1       path cost                100
 designated bridge      8000.fef8a25ccef1       message age timer          0.00
 designated port        8001                    forward delay timer       12.95
 designated cost           0                    hold timer                 0.00
 flags

$ ip route
default via 192.168.232.2 dev envmw  proto static  metric 100
192.168.5.0/24 dev docker0  proto kernel  scope link  src 192.168.5.1
192.168.66.0/24 dev virbr0  proto kernel  scope link  src 192.168.66.1
192.168.232.0/24 dev envmw  proto kernel  scope link  src 192.168.232.100  metric 100
212.25.224.10 via 192.168.232.2 dev envmw  proto static  metric 100

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             255.255.255.255

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             a01.dev.lo  tcp dpt:pxc-splr-ft
ACCEPT     tcp  --  anywhere             a01.dev.lo  tcp dpt:pxc-spvr-ft
ACCEPT     tcp  --  anywhere             a01.dev.lo  tcp dpt:newoak

일부 구성 단계가 누락된 것 같지만 어느 단계인지 모르겠습니다. 해결책을 찾기 위해 인터넷 검색을 시도했지만 아무것도 찾지 못했습니다.

답변1

이것이 작동하려면 NAT를 활성화해야 합니다.

$ iptables -t nat -A POSTROUTING -o envmw -j MASQUERADE
$ iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$ iptables -A FORWARD -i virbr0 -o envmw -j ACCEPT

답변2

envmw브리지에 물리적 인터페이스( )를 추가 하지 않았습니다 . 또한 IP 주소가 필요하지 않은 무차별 모드로 인터페이스를 설정해야 합니다.

brctl addif virbr0 envmw
ip addr add 0/0 dev envmw
ip addr del 192.168.66.1/24 dev envmw
ip link set envmw promisc on

원격 세션에서 이러한 명령을 실행하면 인터페이스 구성이 변경되므로 좋지 않은 생각입니다. 그러면 원격 세션을 포함한 모든 원격 트래픽의 연결이 끊어집니다.

답변3

이 문제를 해결하기 위해 다음 명령을 사용합니다.

sudo nft flush ruleset

관련 정보