Skip to content

Commit

Permalink
Merge pull request #18 from kbu1564/feature/grub_guide
Browse files Browse the repository at this point in the history
#15 Add 3.Setting Http Interlocking.md
  • Loading branch information
kbu1564 committed Aug 12, 2015
2 parents d293056 + 1163128 commit 50ee55e
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 21 deletions.
73 changes: 52 additions & 21 deletions GRUB Guide/2. Setting QEMU bridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/PXEBoot
# sudo apt-get upgrade
```
<br/>
###*1. 브릿지 구축 *
###*1. 브릿지 구축*
```
# sudo brctl addbr br0
# sudo ifconfig br0 up
Expand Down Expand Up @@ -89,8 +89,8 @@ Destination Gateway Genmask Flags Metric Ref Use Iface
###*9. TFTP 서버 설정*
```
# sudo apt-get install tftp
# sudo apt-get install tftpd
# cat /etc/xinetd.d/tftp
# sudo apt-get install xinetd
# sudo vim /etc/xinetd.d/tftp
```
**tftp에 추가할 것**
```
Expand All @@ -109,12 +109,27 @@ service tftp
}
```
<br/>
```
# sudo apt-get install tftpd-hpa
# sudo vim /etc/default/tftpd-hpa
```
<br/>
**tftpd-hpa 파일을 아래와 같이 동일하게 수정**
```
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftpboot"
TFTP_ADDRESS="[::]:69"
TFTP_OPTIONS="--secure"
```
<br/>
###*10. DHCP 설정*
```
sudo apt-get install isc-dhcp-server
sudo vim /etc/dhcp/dhcpd.conf
```
**decpd.conf에 추가할 것**
**dhcpd.conf파일 내용을 아래와 같이 수정**
```
#ddns-update-style none;
Expand All @@ -139,13 +154,7 @@ subnet 192.168.56.0 netmask 255.255.255.0 {
}
```
<br/>
###*11. DHCP 서버 재시작*
```
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/>
###*12. tftp 파일 생성*
###*11. tftp 파일 생성*
```
# cd SecurityBootloader/
# vim tftp
Expand All @@ -156,29 +165,51 @@ qemu-system-i386 -m 512 -net nic,macaddr=52:00:00:00:00:01 -net tap,ifname=tap0,
sudo ~/g2/usr/bin/grub-mknetdir --net-directory=/srv/tftpboot --subdir=boot/grub --modules=tftp
```
<br/>
###*13. tftp 권한 부여*
###*12. tftp 권한 부여*
grub를 pxe로 부팅할 수 있도록 core파일을 만든다. 내부적으로 mkimage를 만든다.
```
# chmod a+x tftp
# ll tftp
# ./tftp <= grub를 pxe로 부팅할 수 있도록 core파일을 만든다. 내부적으로 mkimage를 만든다.
# ./tftp
```
</br>
###*13. TFTP 서버 및 DHCP 서버 재시작*
```
# sudo service tftpd-hpa restart
# sudo /etc/init.d/isc-dhcp-server restart
```
<br/>
###*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 nmap localhost
```
</br>
###*15.노말모드 비디오 설정*
```
# sudo vim /srv/tftpboot/boot/grub/grub.cfg
```
**grub.cfg에 아래 내용 추가**
```
set default="0"
set timeout="3"
###*재부팅시*
menuentry "Buildroot" {
insmod gzio
insmod part_msdos
insmod ext2
}
```
###*16. qemu 실행*
```
# qemu-system-i386 -m 512 -net nic,macaddr=52:00:00:00:00:01 -net tap,ifname=tap0,script=no -boot n
```
<br/>
###*운영체제 재부팅시 아래와 같이 설정을 해주어야 한다.*
```
sudo openvpn --mktun --dev tap0
sudo ifconfig tap0 192.168.56.1 up
sudo service tftpd-hpa restart
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
```


111 changes: 111 additions & 0 deletions GRUB Guide/3. Setting Http Interlocking.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#HTTP 연동 설정
-------------------------------------------------------------------
###*1. 패킷 필터링*

우선 dhcp-server 의 패킷 요청들이 외부로 나갈 수 있어야 한다.
이를 위해 tap0 인터페이스와 eth0를 브릿지 하여 br0 인터페이스 장치를 통해 외부로 패킷이 나갈 수 있도록 해야한다.

이를 위해 아래와 같은 작업을 거친다.
```
# sudo brctl addif br0 tap0
# sudo iptables tap0 0.0.0.0
```
</br>
###*2. dhcp 서버의 설정값 수정*
위의 두 작업을 거쳐 tap0 장치의 인터페이스로 입출력되는 모든 패킷들을 br0 로 브릿지 해준다.
브릿지 작업이 끝난 뒤 본격적으로 dhcp 서버의 설정값을 수정해야하며 수정할 내용은 아래와 같다.
```
# sudo vim /etc/dhcp/dhcpd.conf
```
</br>
위의 명령어를 통해 isc-dhcp-server 설정값을 아래와 같은 아이피 대역으로 수정한다.
수정하는 이유는 `route -n` 명령어로 확인 시 알 수 있다.
우리는 br0 를 통해 인터페이스 장치로 요청되는 아이피 라우팅 대역을 사용해야만 한다.
</br>
**dhcpd.conf를 아래 내용으로 수정한다**
```
option domain-name "intranet.pj-room.com";
option domain-name-servers 168.126.63.1, 8.8.8.8;
option routers 10.0.2.2;
option subnet-mask 255.255.255.0;
default-lease-time 60;
max-lease-time 72;
allow bootp;
allow booting;
subnet 10.0.2.0 netmask 255.255.255.0 {
range 10.0.2.100 10.0.2.200;
option routers 10.0.2.2;
host grub-core {
hardware ethernet 52:00:00:00:00:01;
filename "boot/grub/i386-pc/core.0";
}
}
</br>
```
현재 외부로 나가는 아이피가 br0 인터페이스에 dhcp 형태로 10.0.2.15 아이피를 할당 받아 사용 되어지고 있으며, 이 장치는 10.0.2.2 의 라우터를 통해 br0 인터페이스로 요청되어 지므로 routers 옵션값을 외부로 나갈 수 있는 라우터쪽으로 아이피를 재설정해 준다.
</br>
###*3. 라우팅 테이블 확인*
```
# route -n
```
**출력 결과**
```
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 br0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 br0
```
</br>
###*4. dhcp의 외부 서버 요청시 처리되는 기본 인터페이스 장치의 이름 지정*
위와 같이 dhcp 서버의 값을 설정한뒤 한가지 작업을 더 해야한다. dhcp의 외부 서버 요청시 처리되는 기본 인터페이스 장치의 이름을 지정해야한다. 아래의 명령어로 수정한다.
```
sudo vim /etc/default/isc-dhcp-server
```
</br>
**isc-dhcp-server를 아래 내용으로 수정한다**
```
# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server
# installed at /etc/default/isc-dhcp-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPD_CONF=/etc/dhcp/dhcpd.conf
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPD_PID=/var/run/dhcpd.pid
# Additional options to start dhcpd with.
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="br0"
```
여기서 중요한 것은 INTERFACES 옵션 값이다 이 값을 통해 dhcp 서버가 외부로 요청되야만 하는 기본 인터페이스 장치가 무엇인지를 알수 있게 된다.
</br>
###*5. DHCP 서버 재시작*
명령을 수행할 경우 정상적으로 부팅이 완료되게 된다.
```
sudo /etc/init.d/isc-dhcp-server restart
```

###*6. QEMU 실행*
```
# qemu-system-i386 -m 512 -net nic,macaddr=52:00:00:00:00:01 -net tap,ifname=tap0,script=no -boot n
```
</br>
###*7. DNS 서버 주소 확인*
Grub 콘솔로 진입(c 입력) 한 뒤 아래의 명령을 입력할시 정상적으로 아이피 주소를 반환하면 성공한 것이다.
```
# grub > net_nslookup www.pj-room.com
222.122.81.58
```

0 comments on commit 50ee55e

Please sign in to comment.