1] 관련 파일 다운 받기 (http://www.mobile-ipv6.org/)
2] 현재 패치가 커널 2.6.15용밖에 없으므로 이 버젼의 커널 소스 다운 받기
3] mipv6-2.0.1.tar.gz 압축 풀기
압축 풀기 :
root@ubuntu:~ # tar zvfx mipv6-2.0.1.tar.gz
이동 : mv mipv6-2.0.1 /usr/src/linux/mipv6-2.0.1
4] 받은 패치 파일을 커널 소스 파일 위치로 이동
이동 :
root@ubuntu:~ # mv mipv6-2.0.1-linux-2.6.15.patch.gz /usr/src/linux/
5] 패치하기
소스 디렉토리 이동 : cd /usr/src/linux
패치 하기 :# zcat mipv6-2.0.1-linux-2.6.15.patch.gz | patch -p1
6] 재 컴파일 하기
# make menuconfig
-> Networking
-> Networking Option
->IPv6 붙은거 다 y 설정 (MN용, 라우터는 아래 설정 파일 참고)
-> ./config로 저장하고 나오기
* 컴파일전 필요 패키지들 깔기
# apt-get install kernel-package libncurses5-dev
7] 위 설정 커널 소스가 MIP지원 가능한지 테스트
# ./mipv6-2.0.1/chkconf_kernel.sh /usr/src/linux/
7-1] 아래 처럼 나오면 .config의 설정을 Warning에 맞게 수정(공백도 인식하므로 조심)
Checking kernel configuration...
Using /usr/src/linux//.config
Warning: CONFIG_NET_KEY should be set to y (m)
Warning: CONFIG_NET_KEY_MIGRATE should be set to y (not supported)
Above 2 options may conflict with MIPL.
If you are not sure, use the recommended setting.
7-2] 아래 메시지 나오면 커널 패치 실시
Checking kernel configuration...
Using /usr/src/linux//.config
All kernel options are as they should.
8] 커널 컴파일
# make-kpkg --revision=2.6.15.MIPv6 --initrd binary-arch
상위 디렉토리로 이동 cd ..
# dpkg -i kernel-headers-xxx.deb
# dpkg -i kernel-image-xxx.deb
9] 재부팅
[MN 설정]
1] RA 메시지 수신하여 자신의 정보 수정 하도록 설정
echo 1 > /proc/sys/net/ipv6/conf/all/autoconf
echo 1 > /proc/sys/net/ipv6/conf/all/accept_ra
echo 1 > /proc/sys/net/ipv6/conf/all/accept_redirects
2] 무선랜 장치에 IPv6주소 적용하기 (통신은 터널링을 통하여 하므로 static하게 주소 설정)
vi /etc/network/interfaces
#iface eth1 inet6 static
# address 2001:0220:1404:5::3
# netmask 64
3] mipv6d 데몬 설치하기
# cd /usr/src/linux/mipv6-2.0.1
# CPPFLAGS='-isystem /usr/src/linux/include' ./configure --enable-vt
(telnet localhost 7777 로 들어가기 위해 설정)
# make
# make install
4] mip6d.conf 파일 수정
/usr/src/linux/mipv6-2.0.1/extras폴더의 파일중 노드의 성격에 맞는 파일을 수정
5] /usr/local/etc/mip6d.conf 에 복사
# mkdir /usr/local/etc
*예제파일 보기*
NodeConfig MN;
## If set to > 0, will not detach from tty
DebugLevel 0;
## Support route optimization with other MNs
DoRouteOptimizationCN enabled;
## Use route optimization with CNs
DoRouteOptimizationMN enabled;
SendMobPfxSols enabled;
UseCnBuAck disabled;
MnDiscardHaParamProb enabled;
Interface "eth1";
#Interface "eth1" {
# MnIfPreference 2;
#}
MnRouterProbes 1;
MnHomeLink "eth1" {
HomeAgentAddress 2001:0220:1404:3::1; (홈에젼트 라우터 주소)
HomeAddress 2001:0220:1404:3::15/64; (지금 이 모바일 노드 주소)
# address opt.
#MnRoPolicy 3ffe:2060:6:1::3 enabled;
#MnRoPolicy disabled;
}
##
## IPsec configuration
##
UseMnHaIPsec disabled;
## Key Management Mobility Capability
#KeyMngMobCapability disabled;
#IPsecPolicySet {
# HomeAgentAddress 3ffe:2620:6:1::1;
# HomeAddress 3ffe:2620:6:1::1234/64;
# IPsecPolicy HomeRegBinding UseESP;
# IPsecPolicy MobPfxDisc UseESP;
# IPsecPolicy TunnelMh UseESP;
#}
6] 실행
/usr/local/sbin/mip6d ?[모드]
Ex ) /usr/local/sbin/mip6d ?M
6-1] 확인 : 실행후 ifconfig로 터널링 인터페이스 생성확인
ip6tnl1 Link encap:UNSPEC HWaddr 20-01-02-20-14-04-00-03-00-00-00-00-00-00
inet6 addr: fe80::200:f0ff:fe85:14ae/64 Scope:Link
inet6 addr: 2001:220:1404:3::100/128 Scope:Global
7] 홈에이전트 AP적용하기
# iwconfig eth1 mode Managed essid IMTL_AP1
7-1] 확인 : 라우터의 RA수신후 또 다른 글로벌 주소 생성 확인
eth1 Link encap:Ethernet HWaddr 00:08:A3:FD:38:80
inet addr:192.168.3.101 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: 2001:220:1404:3::101/64 Scope:Global
inet6 addr: 2001:220:1404:3:208:a3ff:fefd:3880/64 Scope:Global
inet6 addr: fe80::208:a3ff:fefd:3880/64 Scope:Link
[라우터 설정 ]
1] 포워딩 기능 enable
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
echo 0 > /proc/sys/net/ipv6/conf/all/accept_redirects
2] router advertisement daemon설치
apt-get install radvd
3]
설정 파일 작성
/etc/radvd.conf
*예제 설정 보기*
# vessel, 192.168.2.1 / 2001:0220:1404:2::1
interface eth1
{
AdvSendAdvert on;
AdvIntervalOpt on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
# AdvHomeAgentFlag on;
AdvHomeAgentFlag off;
prefix 2001:0220:1404:2::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
*설정파일 설명 보기*
interface eth2 { # ra메시지를 전송할 interface를 설정
# route가 주기적으로 RA 메시지를 전송하거나 router solicitation에 대한
# resonse를 전송하기 위한 설정
AdvSendAdvert on;
# RA 메시지를 전송할 Interval을 설정
AdvIntervalOpt on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
# RA 메시지를 전송하는 route가 Home Agent의 기능을 수행한다는 것을 설정
AdvHomeAgentFlag on;
# link상의 prefix 정보를 나타냄
prefix 2001:0220:1404:1::/64 {
AdvOnLink on; # 설정된 prefix가 link상에서 사용될 수 있다는 것을 설정
AdvAutonomous on; # stateless address configuration을 할 수 있음을 설정
AdvRouterAddr on;
};
4] 데몬 실행
/etc/init.d/radvd start
[HA설정]
1] 기본 라우터 설정 적용
2] mip6d 데몬 적용 (HA모드 및 HA설정 파일 적용)
[CN설정]
1] mip6d 데몬 적용 (HA모드 및 CN설정 파일 적용)
2] /usr/local/etc/mip6d.conf 설정
NodeConfig CN;
## If set to > 0, will not detach from tty
DebugLevel 0;
## Support route optimization with MNs
DoRouteOptimizationCN enabled;
[테스트 하기]
IPv6 tcpdump실행
tcpdump -i eth1 -vv ip6 or proto ipv6
tcpdump -i eth1 -vv ip6
핸드 오프 실시
# iwconfig eth1 essid IMTL_AP[변경]
*rc.locla 추가 부분 보기*
root@goliath:/etc/rc.boot# vi rc.local
1 #!/bin/sh
2
3 # 18a, if you want to communicate with another world, you must set the source nat. Below like that:
4
5 echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
6 echo 1 > /proc/sys/net/ipv4/ip_forward
7
8 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 10.51.12.177
9 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 10.51.12.177
10 iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j SNAT --to 10.51.12.177
11 iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j SNAT --to 10.51.12.177
12
13 # to sync server time.
14 ntpdate 211.189.50.33
15
16 ip -6 route add 2001:0220:1404:3::/64 via 2001:0220:1404::3 dev eth1
17 ip -6 route add 2001:0220:1404:2::/64 via 2001:0220:1404::2 dev eth1
18 #ip -6 route add ::/0 via 2001:0220:1404::2 dev eth1
19
20 route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.0.3
21 route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.2
22 route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
23
24 echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
25 echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
26 echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
27 echo 0 > /proc/sys/net/ipv6/conf/all/accept_redirects
28
29 #/usr/sbin/radvd
작성자 : 임헌정
작성일 : 2006.05.17
http://www.4ellene.net
참고 : http://www.redhat.com/mirrors/LDP/HOWTO/Mobile-IPv6-HOWTO/index.html
Comments List
이 글 얻어갑니다.. ^_^
출처는 표기해 두었습니다.
洹몃
洹몃
以