tap 방식 으로 qemu 를 사용 하여 가상 컴퓨터 NAT 네트워크 구축
가상 컴퓨터
호스트:가상 컴퓨터 서버 만 들 기
수요:nat 방식 으로 qemu 를 이용 하여 가상 컴퓨터 가 외부 네트워크 에 접근 할 수 있 도록 가상 컴퓨터 를 만 듭 니 다.
현재 호스트 의 ip 는 192.168.139.85 입 니 다.
vm 의 ip 단 계 를 192.168.12.0 단 으로 설정 하고 싶 습 니 다.dhcp 는 자동 으로 ip 를 가 져 오고 외부 네트워크 에 접근 합 니 다.
기본 원리:
tap 방식 으로 vm 를 구축 하고 망 교 virbr 0 을 구축 합 니 다.이 망 교 를 게 이 트 웨 이 192.168.122.1 로 하고 tap 를 이 망 교 virbr 0 에 연결 합 니 다.tap 설 비 는 vm 안의 eth 0 으로 통 합 됩 니 다.그래서 설립 된 모든 vm 는 망 교 에서 서로 방문 할 수 있 습 니 다.호스트 에서 dnsmasq 로 dhcp 서 비 스 를 구축 하고 virbr 0 에 연결 할 수 있 습 니 다.이렇게 하면 브리지 에 연 결 된 모든 vm 는 dhcp 서 비 스 를 사용 할 수 있 습 니 다.vm 에서 dhclient 를 사용 하면 호스트 dhcp 서비스 가 제공 하 는 ip 주 소 를 얻 을 수 있 습 니 다.호스트 에 nat 의 iptables 를 설정 한 다음 시스템 의 퍼 가기 기능 을 열 수 있 습 니 다.
설치 필요:qemu,tap,brctl,iptables,커 널 파일 bzImage,운영 체제 미 러 파일 hda.img
환경:Ubuntu 14.04.4 LTS
1.120 M 의 간단 한 Liux 미 러 hda.img 을 만 들 고 ip,ifconfig,iptables,dhclient 등 네트워크 명령 을 지원 해 야 합 니 다.
수립 방법
debootstrap --variant=minbase --include=util-linux,dhcp-client,ssh,vim,make,psmisc,mini-httpd,net-tools,iproute,iputils-ping,procps,telnet,iptables,wget,tcpdump,curl,gdb,binutils,gcc,libc6-dev,lsof,strace --exclude=locales,aptitude,gnupg,cron,udev,tasksel,rsyslog,groff-base,manpages,gpgv,man-db,apt,debian-archive-keyring,sysv-rc,sysvinit,insserv,python2.6 --arch i386 etch etch 'http://archive.debian.org/debian'
이 debootstrap 명령 은 국내 에서 통 하지 않 을 수 있 습 니 다.aws 에서 조작 하 세 요.사용 가능 한 img 파일 이 있 으 면 두 번 째 단 계 를 보 세 요.
구체 적 인 세부 사항 참고:
기본 가상 컴퓨터http://haoningabc.iteye.com/blog/2306941
bzImage 의 커 널 파일 과 hda.img 의 운영 체제 미 러 를 가 져 옵 니 다.
2.qemu 를 사용 하여 가상 컴퓨터 를 만 들 고 호스트 의 네트워크 를 설정 합 니 다.
qemu-system-i386 -kernel bzImage -drive file=hda.img,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1" -nographic -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,name=haha,ifname=tap1,script=no,downscript=no
-kernel 지정 커 널 파일 bzImage
-app end 는 kernel 에서 사용 하 는 커 널 매개 변수 에 맞 춰 시작 파일/sbin/init 를 지정 합 니 다.
-drive 는 하 드 디스크 파일 hda.img 을 지정 하고-hda.img 도 사용 할 수 있 습 니 다.
-nographic 는 그래 픽 인터페이스 를 사용 하지 않 습 니 다.이것 이 없 으 면 지정 해 야 합 니 다.-vnc 0.0.0.0:1 인 자 는 vncviewer 를 통 해 접근 합 니 다.
예컨대
qemu-system-i386 -kernel /root/jslinux/obj/linux-x86-basic/arch/i386/boot/bzImage -drive file=hda_hasbacking_file.qcow2,if=ide,cache=none -append "root=/dev/sda rw rdinit=/sbin/init notsc=1" -vnc 0.0.0.0:1 -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,name=haha,ifname=tap1,script=no,downscript=no
-boot 는 시작 파 라 메 터 를 설정 하고 d 는 시디롬 이 며 c 는 첫 번 째 하 드 디스크 입 니 다.
-net 지정 네트워크 설정(
중요 하 다
총 세 가지 가 있어 요.
-net nic 에 필요 한 기본 설정,macaddr 에 mac 주 소 를 설정 합 니 다.model 은 네트워크 카드 의 유형 입 니 다.model=?어떤 종류 가 있 는 지 보기
-net tap 에서 브리지 모드 를 사용 할 경우 시작 script=을 지정 하고 downscript 를 닫 아야 합 니 다.
fd 는 이미 있 는 tap 장 치 를 가리 키 며,name 은 Monitor 모드 에서 info network 를 사용 하여 본 이름 입 니 다.ifname 은 tap 장치 가 호스트 에 있 는 이름 입 니 다.
-net user 사용자 모드,qemu 는 Slirp 를 사용 하여 tcp/ip 프로 토 콜 스 택 을 실현 합 니 다.
보통 닉 은 있어 야 합 니 다.tap 와 user 는 하 나 를 선택해 서 사용 해 야 합 니 다.
여기 잘 쓰 세 요.
-net tap,ifname=tap 1 tap 장 치 를 만 듭 니 다.
가상 컴퓨터 를 만 든 후,
호스트 ip link show
tap 1 장치 가 하나 더 발견 되 었 습 니 다.
망 교 를 세우 고,
tap 1 을 다리 에 연결 하고,
#
brctl addbr virbr0
ip link set tap1 up
# tap
brctl addif virbr0 tap1
\#nat 의 iptables 설정
iptables -t nat -A POSTROUTING -s "192.168.122.0/255.255.255.0" ! -d "192.168.122.0/255.255.255.0" -j MASQUERADE
\#Liux 커 널 의 퍼 가기 설정
echo 1 >/proc/sys/net/ipv4/ip_forward
#ifconfig eth0 promisc
3.호스트 에서 dnsmasq 서 비 스 를 시작 하고 dhcp 의 server 기능 을 제공 합 니 다.매개 변 수 는 방금 건 설 된 virbr 0 다 리 를 가리 키 는 것 을 주의 하 십시오.
dnsmasq --strict-order --except-interface=lo --interface=virbr0 --listen-address=192.168.122.1 --bind-interfaces --dhcp-range=192.168.122.2,192.168.122.254 --conf-file="" --pid-file=/var/run/qemu-dhcp-virbr0.pid --dhcp-leasefile=/var/run/qemu-dhcp-virbr0.leases --dhcp-no-override
관건 은
--interface=virbr0
--dhcp-range 네트워크 범위 설정
4.가상 컴퓨터 에서 dhcp 설정 네트워크
여 기 는 vm 에서 작 동 합 니 다.위 에 있 는 것 은 모두 호스트 에서 작 동 합 니 다.
ip link set eth0 up
# ip
dhclient
# ping
ping 192.168.122.1
ping www.baidu.com
#
ifconfig eth0
# ip 192.168.122.37
cat /etc/resolv.conf
# dns
#ip route
# ip
#route add default gw 192.168.122.1 netmask 255.255.255.0
하면,만약,만약...
브리지 방식 은 qemu 를 사용 하여 가상 컴퓨터 를 만 듭 니 다.http://haoningabc.iteye.com/blog/2306736
포트 맵:
vm 에서 http 서 비 스 를 시작 하고 80 포트 를 엽 니 다.
mini-httpd
netstat -nltp|grep 80
호스트 에서
iptables -t nat -A PREROUTING -p tcp -d 192.168.139.85 --dport 81 -j DNAT --to 192.168.122.37:80
호스트 ip
192.168.122.37 은 vm 의 ip 입 니 다.
vm 의 80 포트 를 호스트 81 에 비 추고,
호스트 에서 netstat-nltp|grep 81 은 볼 수 없습니다.
iptables -t nat -L
변화 보기
이 규칙 을 지 우려 면-A 를-D 로 바 꿔 주세요.
방문 하 다.http://192.168.139.85:81 vm 내부 로 들 어 갔 어 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vagrant 를 사용 하여 Windows 에 개발 환경 을 배치 합 니 다.개발 자 에 게 Vagrant 는 팀 원 들 의 개발 환경 을 통일 시 켜 줄 수 있다.만약 당신 이나 당신 의 동료 가 Vagrantfile 을 만 들 었 다 면, vagrant 를 실행 하기 만 하면 됩 니 다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.