QEMU 가상 머신을 실행하려고 하는데 인터넷에 액세스할 수 없고 호스트 머신과 Docker 네트워크에만 액세스할 수 있습니다.
내가 뭘 한거지:
- 브리지가 생성됩니다
brctl addbr virbr0
. - 열어 봐:
ip link set up dev virbr0
; - IP 할당:
ip addr add 192.168.66.1/24
; - 업데이트된 QEMU 구성:
echo "allow virbr0" >> /etc/qemu/bridge.conf
; 가상 설치를 실행합니다:
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