Skip to content

Commit

Permalink
#7 Add Content :: 2.Setting QEMU bridge.md
Browse files Browse the repository at this point in the history
  • Loading branch information
yunheur committed Aug 7, 2015
1 parent 4ad0add commit 8fd74aa
Showing 1 changed file with 125 additions and 39 deletions.
164 changes: 125 additions & 39 deletions GRUB Guide/2. Setting QEMU bridge.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,25 @@
[참고사이트](http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/cloud/Qemu/Network)
<br/>
우분투에서 Bridge 네트워크 구축
-------------------------------------------------------------------
우분투에 브릿지 네트워크를 구축하기로 했다. 아래의 과정을 거친다.
**참고 사이트**
```
1. 호스트 브릿지인 br0를 만든다.
2. br0를 eth0 포트에 링크한다.
3. VM을 위한 tap 디바이스 2개를 만든다. 이름은 tap1과 tap2로 했다.
4. br0에 tap1, tap2, eth0을 묶는다.
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/dhcp
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/PXEBoot
```
<br/>
###*1. brctl을 이용해서 브릿지를 만든다.*
**필수**
```
- sudo apt-get update
- sudo apt-get upgrade
```
# brctl addbr br0
# ifconfig br0 up
<br/>
# sudo brctl addbr br0
# sudo ifconfig br0 up
```
<br/>
###*2. 브릿지 인터페이스를 설정한다.*
1. eth0 과 브릿지 한다.
2. dhcp를 이용해서 브릿지의 네트워크를 설정한다. dhcp 패킷은 eth0을 타고 나가서 브로드캐스팅 된다.
###*2. 브릿지 인터페이스를 설정*
```
# vim /etc/network/interfaces
# sudo vim /etc/network/interfaces
```
▶ interfaces의 내용
**interfaces에 추가할 것**
```
# cat /etc/network/interfaces
auto lo
iface lo inet loopback

Expand All @@ -35,62 +30,153 @@ iface br0 inet dhcp
bridge_fd 0
bridge_maxwait 0
```
<br/>
1. eth0 과 브릿지 한다.
2. dhcp를 이용해서 브릿지의 네트워크를 설정한다. dhcp 패킷은 eth0을 타고 나가서 브로드캐스팅 된다.
###*3. 브릿지 인터페이스를 올린다.*
```
# ifup br0
# sudo ifup br0
```
<br/>
###*4. eth0이 했던 네트워크 인터페이스의 역할은 앞으로 br0이 하고 eth0은 물리적인 디바이스를 링크하기 위한 역할만을 한다. 따라서 eth0의 네트워크 설정을 없앤다.*
###*4. eth0의 네트워크 설정을 없앤다.*
이유 : eth0이 했던 네트워크 인터페이스의 역할은 앞으로 br0이 하고 eth0은 물리적인 디바이스를 링크하기 위한 역할만을 한다.
```
# ifconfig eth0 0.0.0.0
# sudo ifconfig eth0 0.0.0.0
```
<br/>
###*5. Tap interface 생성*
```
# openvpn --mktun --dev tap1
# openvpn --mktun --dev tap2
# ifconfig tap1 up
# ifconfig tap2 up
# sudo openvpn --mktun --dev tap0
# sudo ifconfig tap0 192.168.56.1 up
```
<br/>
###*6. 브릿지에 인터페이스들을 추가한다.*
###*6.브릿지에 인터페이스들을 추가*
```
# brctl addif br0 tap1
# brctl addif br0 tap2
# brctl addif br0 eth0
# sudo brctl addif br0 tap0
# sudo brctl addif br0 eth0
```
<br/>
###*7. 네트워크 브릿지 정보를 확인해 보자.*
###*7. 네트워크 브릿지 정보를 확인*
```
# brctl show
```
**출력 값**
```
bridge name bridge id STP enabled interfaces
br0 8000.d2a4aba39cf4 no eth0
tap1
tap0
```
<br/>
###*8. 호스트의 라우팅 설정을 확인해 보자.*
###*8. 호스트의 라우팅 설정을 확인*
```
# route -n
```
**출력 값**
```
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.11.1 0.0.0.0 UG 0 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 br0
192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
```
▶ 0.0.0.0/0으로 향하는 패킷은 br0 으로 흐른다. br0은 이 패킷을 eth0 인터페이스로 보낼 것이다.
▶ 192.168.11.0/24로 향하는 패킷은 LAN 영역에서 소비된다.
0.0.0.0/0으로 향하는 패킷은 br0 으로 흐른다. br0은 이 패킷을 eth0 인터페이스로 보낼 것이다.
192.168.11.0/24로 향하는 패킷은 LAN 영역에서 소비된다.
테스트를 위한 VM을 실행한다. VM들의 네트워크 설정은 DHCP로 한다.
<br/>
###*9. TFTP 서버 설정*
```
# sudo apt-get install tftp
# sudo apt-get install tftpd
# cat /etc/xinetd.d/tftp
```
**tftp에 추가할 것**
```
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /srv/tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
```
<br/>
###*10. DHCP 설정*
```
sudo apt-get install isc-dhcp-server
sudo vim /etc/dhcp/dhcpd.conf
```
**decpd.conf에 추가할 것**
```
#ddns-update-style none;

option domain-name "yujoonote.tistory.com";
option domain-name-servers 8.8.8.8, 8.8.6.6;
option routers 192.168.56.1;
option subnet-mask 255.255.255.0;

default-lease-time 60;
max-lease-time 72;

allow bootp;
allow booting;

subnet 192.168.56.0 netmask 255.255.255.0 {
range 192.168.56.10 192.168.56.20;
option routers 192.168.56.1;
host pxe-bootos {
hardware ethernet 52:00:00:00:00:01;
filename "boot/grub/i386-pc/core.0";
}
}
```
<br/>
###*9. 테스트를 위한 VM을 실행한다. VM들의 네트워크 설정은 DHCP로 한다.*
###*11. DHCP 서버 재시작*
```
# qemu-system-i386 -m 512 -hda brdist-img.raw -net nic,macaddr=52:00:00:00:00:01 -net tap,ifname=tap1,script=no -boot n
sudo /etc/init.d/isc-dhcp-server restart
qemu-system-i386 -m 512 -net nic,macaddr=52:00:00:00:00:01 -net tap,ifname=tap0,script=no -boot n
```
<br/>
###*10. 실행된 가상머신은 닫지 않은 상태에서 새로운 터미널을 생성해, 브릿지의 MAC 테이블에 VM의 맥이 포함됐는지 확인해 보자.*
###*12. tftp 파일 생성*
```
# brctl showmacs br0
# cd SecurityBootloader/
# vim tftp
```
**tftp에 추가할 것**
```
#!/bin/bash
sudo ~/g2/usr/bin/grub-mknetdir --net-directory=/srv/tftpboot --subdir=boot/grub --modules=tftp
```
<br/>
###*13. tftp 권한 부여*
```
# chmod a+x tftp
# ll tftp
# ./tftp <= grub를 pxe로 부팅할 수 있도록 core파일을 만든다. 내부적으로 mkimage를 만든다.
```
<br/>
**이 테스트는 하나의 VLAN에서 이루어졌다. VLAN을 쪼개는 방식으로 Multi-tenant 응용이 가능 할거다.**
###*14. tftp 동작 확인*
```
sudo nmap localhost

sudo apt-get install tftpd-hpa
sudo service tftpd-hpa restart

qemu-system-i386 -m 512 -net nic,macaddr=52:00:00:00:00:01 -net tap,ifname=tap0,script=no -boot n
```
###*재부팅시*
```
sudo openvpn --mktun --dev tap0
sudo ifconfig tap0 192.168.56.1 up
sudo /etc/init.d/isc-dhcp-server restart
qemu-system-i386 -m 512 -net nic,macaddr=52:00:00:00:00:01 -net tap,ifname=tap0,script=no -boot n
```

0 comments on commit 8fd74aa

Please sign in to comment.