IPv6IPSec导引2试验Linux+NAS+.docx
《IPv6IPSec导引2试验Linux+NAS+.docx》由会员分享,可在线阅读,更多相关《IPv6IPSec导引2试验Linux+NAS+.docx(17页珍藏版)》请在冰豆网上搜索。
IPv6IPSec导引2试验Linux+NAS+
IPv6和IPSec
试验笔记
1.IPv6inLinux配置2
1.1.安装Debian2
1.2.检查IPv6支持2
1.3.添加IPv6工具组件2
2.IPv6路由实验3
2.1.自动分配IPv6地址3
2.2.路由配置4
3.NAS:
访问控制5
3.1.NAS网关原理试验:
允许或禁止路由访问5
3.2.NAS部署试用:
走TT6
3.3.获得正式的IPv6地址:
使用BTexact的IPv6隧道7
3.4.自动分配IPv4地址:
DHCPv4Server7
3.5.登录界面:
重定向页面8
3.4.1Apache的配置8
4.NAS@211.86.49.110说明9
5.IPSecinLinux试验9
5.1.FreeS/WAN10
5.2.KAME-racoon10
5.2.1IPSec/IPv410
5.2.2IPSec/IPv611
5.2.3IPSec/IPv6withCERT12
5.3.isakmpd13
6.TunnelBroker13
7.参考13
1.IPv6inLinux配置
Linux对IPv6的支持是比较彻底的,这得益于社区的共同努力,尤其是USAGI项目的持续努力,2.6内核保持了较好的IPv6新特性。
下面以Debian3.1r1a为例,介绍IPv6的安装和配置。
1.1.安装Debian
Debian3.1r1a默认安装。
修正sources.list启用新的安装源:
debftp:
//211.86.49.110/pub/ISOs/Debian3.1r1a/debian-31r1-i386-binary-1/unstablecontribmain
debftp:
//211.86.49.110/pub/ISOs/Debian3.1r1a/debian-31r1-i386-binary-2/unstablecontribmain
然后更新dpkg库:
#apt-getupdate
为了方便后期使用,安装辅助工具:
#apt-getinstallapt-show-versions//查看已经安装组件列表
#apt-getinstallrcconf//服务管理
#apt-getinstallsshsambaless//常用工具
为了操作方便,尤其是使用vmware虚拟机中安装的Linux时,建议从Windows中使用ssh连接到linux,同时在Linux启用Samba服务,这样可以在Windows中方便的浏览Linux文件。
1.2.检查IPv6支持
Linux内核2.4/2.6已全面支持IPv6。
核实当前系统是否已经开启IPv6支持:
#cat/proc/net/if_inet6
#ping6:
:
1
IE/Mozilla/Firefox浏览器都支持IPv6。
Mozilla/Firefox可以使用这种形式的URL(IE不能使用这种形式):
http:
//[3e79:
1:
:
1]/
如果是IE,可以在/etc/hosts(\windows\system32\drivers\hosts)文件中添加一行,然后访问http:
//rose/。
3e79:
1:
:
1rose
1.3.添加IPv6工具组件
将要用到的主要的IPv6工具:
ping6
traceroute6
tracepath6
tcpdump
添加net-tools组件(indebian默认已经安装),以及添加iproute等组件:
apt-getinstallnet-tools
apt-getinstalliproute
apt-getinstalliputils-arpingiputils-pingiputils-tracepath
apt-getinstalltcpdumpnmap
可以综合为一条命令:
apt-getinstallnet-toolsiprouteiputils-arpingiputils-pingiputils-tracepathtcpdumpnmap
2.IPv6路由实验
路由器至少有两个网络接口连接两个网络。
5.1.自动分配IPv6地址
IPv6的路由器可以使用radvd分发地址配置信息,主要是广播地址前缀。
安装radvd组件:
#apt-getinstallradvd
比如在eth0网段上广播路由前缀3e79:
1:
:
/64,配置文件/etc/radvd.conf内容如下。
3e79是随便取用来测试的地址。
interfaceeth0{
AdvSendAdverton;
MinRtrAdvInterval3;
MaxRtrAdvInterval10;
prefix3e79:
1:
:
/64{//3e79CNGI
AdvOnLinkon;
AdvAutonomouson;
AdvRouterAddron;
};
};
使用radvdump命令可以看到radvd的路由广播信息。
#radvdump
为方便设置eth0的地址为3e79:
1:
:
1。
#ifconfigeth0add3e79:
1:
:
1//为什么自己网卡不能自动获得IPv6地址?
eth0所在网络上的其他机器可以自动获得3e79:
1:
:
/64前缀的IPv6地址,其后64位由网卡MAC地址自动衍生。
比如某机器A获得的地址是3e79:
1:
:
20c:
29ff:
fedc:
a021,机器B获得的地址是3e79:
1:
:
20c:
29ff:
feb4:
290c。
则A、B和Rose机器相互之间可以使用3e79:
1:
:
/64前缀的地址相互ping通。
查看本机IPv6地址:
#ifconfig|grepinet6
5.2.路由配置
机器Rose作为路由器,有2块网卡分别连接两个LAN。
一个LAN是实验室网络,包括原IP属于211.86.49.0/24的所有机器,其中有一台专门的测试机Alice。
另一个LAN是虚拟LAN,使用OpenVPN和桥接连接到远程一个TT网段上,其上一台测试机Bob。
(1)eth03e79:
1:
:
1/64接在实验室LAN,发布3e79:
1:
:
/64前缀。
(2)eth13e79:
2:
:
2/64连接远程LAN的隧道,发布3e79:
2:
:
/64前缀。
结构图示{a/b/r都是vmware虚拟机}
核实在Rose上已经开启IPv6路由转发(/proc/sys/net/ipv6/conf/all/forwarding),配置radvd,分别在eth0和eth1上提供3e79:
1:
:
/64和3e79:
2:
:
/64前缀,并设置路由,脚本如下:
hostnamerose
echo1>/proc/sys/net/ipv6/conf/all/forwarding
ifconfigeth0up
ifconfigeth0add3e79:
1:
:
1/64
route-Ainet6add3e79:
1:
:
/64eth0
ifconfigeth1up
ifconfigeth1add3e79:
2:
:
2/64
route-Ainet6add3e79:
2:
:
/64eth1
可能由于Linuxinvmware的MAC地址动态变化的原因,每次获得的IPv6地址有变化。
为方便,可以另外添加一个地址,比如Alice额外设置3e79:
1:
:
a。
这个地址可以视同静态地址被外部引用。
在Alice上:
hostnamealice
ifconfigeth0add3e79:
1:
:
a/64
route-Ainet6add3e79:
2:
:
/64gw3e79:
1:
:
1
在Bob上:
hostnamebob
ifconfigeth0add3e79:
2:
:
b
route-Ainet6add3e79:
1:
:
/64gw3e79:
2:
:
2
为了方便,特添加到/etc/hosts(\windows\system32\drivers\hosts):
3e79:
1:
:
1roserose1r1r
3e79:
1:
:
aalicea
3e79:
2:
:
2rose2r2
3e79:
2:
:
bbobb
此时A、B之间可以ping6通。
注:
实际上Rose是运行在238上的vmware虚拟机,Alice是运行在110上的虚拟机,Bob是运行在OpenVPN隧道远端的虚拟机。
3.NAS:
访问控制
上面的路由实验中默认允许任意分组通过路由器。
下面使用Linux内置的防火墙功能演示网络访问服务(NAS)的实现。
5.1.NAS网关原理试验:
允许或禁止路由访问
把3f79:
1:
:
/64当作内网,把3f79:
2:
:
/64当作外网。
一开始禁止所有源自内网的分组通过路由器访问外网:
ip6tables-AFORWARD-s3e79:
1:
:
/64-jDROP
ip6tables-DFORWARD-s3e79:
1:
:
/64-jDROP//如果恢复
允许比如Alice、svr110通过,则:
[登录成功后]
ip6tables-IFORWARD-s3e79:
1:
:
a/128-jACCEPT
如果再禁止通过:
[注销或超时]
ip6tables-DFORWARD-s3e79:
1:
:
a/128-jACCEPT
注意:
A的IPv6地址是通过radvd广播前缀结合本机网卡MAC自动得来的,此处为方便假设。
假如位于外网3e79:
2:
:
/64上有某些资源(比如可以连接到IPv6互联网),3e79:
1:
:
/64上的用户可以登录后访问。
http:
//rose/login.htm
该网页用一个FORM接受用户提交的帐号、口令、登录/注销请求,数据POST路由器rose的/cgi-bin/checkin.cgi脚本,该脚本文件检查用户名字和口令是否有效,如果有效则登录或注销。
登录成功,允许当前用户IP地址通过网关访问3e79:
2:
:
。
注销成功,禁止当前用户IP地址通过网关访问3e79:
2:
:
。
为了演示效果,同时支持IPv4,内网地址172.21.0.0/16,外网地址172.22.0.0/16。
如图:
注:
login.htm、checkin.cgi、cngiuser.conf、rc内容与代码,可以ssh登录rose查看。
{0utdate}
注意事项
(1)cgi脚本文件需要设置可执行属性。
chmod+xcheckin.cgi
(2)为了让webserver/CGI能够操作iptables,暂时设置ip6tables为SUID属性。
这样做应该不会带来问题。
chmod+s`whichip6tables`
chmod+s`whichiptables`
5.2.NAS部署试用:
走TT
在Alice上,启用IPv6,获得IPv6地址,修改hosts,访问http:
//rose/login.htm登录,则可以访问3e79:
2:
:
/64外网。
Bob有一条TT宽带线路。
使用IPv4,在Bob上启用NAT,则可以让内网透明使用TT线路。
同时,配合对路由表的修正,仍可以保持对教育网的高速访问。
在Rose上如下配置,并启用IPv4路由转发:
[主要思路如此]
echo1>/proc/sys/net/ipv4/ip_forward//启用IPv4路由
ifconfigeth0:
1172.21.1.1/16//Rose的内网地址
ifconfigeth1:
1172.22.2.2/16//Rose的外网地址,可达Bob
routeadd-net0/0172.22.22.22//IPv4的默认路由指向Bob
在Bob上配置外网地址,同时启用IPv4的路由转发和NAT:
ifconfigeth0:
1172.22.22.22
echo1>/proc/sys/net/ipv4/ip_forward
iptable-tnat-APOSTROUTING-s172.16.0.0/12-oeth1-jMASQUERADE
内网其他机器上的IPv4地址自己手工配置为172.21.0.0/16,则在172.21.0.0/16上的机器可以通过Rose经由Bob使用TT高速线路。
如果需要保持EDU仍走校园网,则可以保持路由表规则即可。
比如在211.86.49.238上的配置如下:
netshinterfaceipaddaddr"本地连接"172.21.49.238255.255.0.0
routeadd0.0.0.0mask0.0.0.0172.21.1.1metric1
routeadd202.194.0.0mask255.255.0.0211.86.49.254metric1
…//以及其他教育网地址段
5.3.获得正式的IPv6地址:
使用BTexact的IPv6隧道
3e79:
:
是非正式的IPv6地址。
互联网上有好多站点提供测试用IPv6地址,BTexact即提供正式的临时IPv6地址可用。
为实测,已在105机房202.194.194.246上申请到的BTexact的IPv6地址2001:
618:
400:
7ffc:
:
/64,使用radvd播放地址广告,部署NAS控制访问IPv6网络。
测试和使用方法如下:
(0)确信能ping/ping-6/ping6通2001:
618:
400:
7ffc:
:
1
ping62001:
618:
400:
7ffc:
:
1
(1)添加路由
#route-Ainet6add:
:
/0gw2001:
618:
400:
7ffc:
:
1或者在windows中
C:
>netshinterfaceipv6addroute:
:
/0local2001:
618:
400:
7ffc:
:
1
(2)用mozilla访问网关,登录
http:
//[2001:
618:
400:
7ffc:
:
1]/login-en.htm
(3)在登录后pingIPv6网络应该可以通达。
ping6-n
ping6-n
(4)使用mozilla访问IPv6-Only的网址,应该可以看到正常网页。
5.4.自动分配IPv4地址:
DHCPv4Server
dhcpd提供了IPv4版的动态地址分配,同时附带配置路由和域名后缀。
安装dhcpd:
{可以直接#aptitudeinstalldhcpd}
wgetdhcp-3.0.4.tar.gz
tarzxfdhcp-3.0.4.tar.gz
cddhcp-3.0.4
./configure
make
makeinstall
touch/var/state/dhcp/dhcpd.leases
一个典型的dhcpd.conf如下:
#cat/etc/dhcpd.conf
default-lease-time600;
max-lease-time7200;
optionsubnet-mask255.255.0.0;
optionbroadcast-address172.23.255.255;
optionrouters172.23.1.1;
optiondomain-name-servers202.194.15.12;
optiondomain-name"";
ddns-update-styleinterim;
subnet172.23.0.0netmask255.255.0.0{
range172.23.1.9172.23.250.250;
}
注:
这个软件在后来并没有被使用。
5.5.PPTPD:
PPTPVPNServer
(在debian4中。
2008-2)
aptitudeinstallpptpd
在/etc/pptpd.conf的尾部,像这样修改:
listen211.87.235.52
localip169.254.2.252
remoteip169.254.2.140-240
修改/etc/ppp/pptpd-options,有几处像这样:
name52db4
#require-mppe-128
在/etc/ppp/chap-secrets中,
#clientserversecretIPaddresses
vpn52db4"vpn"*
这样基本就可以了。
另外,可以同时配置上DHCP,让DHCP客户端和VPN客户端之间ping互通。
这样:
aptitudeinstalldhcpd
配置文件像这样,其中shared-network视需要可以加上或去掉。
optiondomain-name-servers202.194.15.12;
optionsubnet-mask255.255.255.128;
default-lease-time600;
max-lease-time7200;
shared-networkmytag{
subnet169.254.2.0netmask255.255.255.128{
range169.254.2.2169.254.2.80;
optionbroadcast-address169.254.2.127;
optionrouters169.254.2.1;
}
subnet211.87.235.0netmask255.255.255.0{
}
}
5.6.登录界面:
重定向页面
用户在使用网络之前应该先登录,可行方法有:
(1)去某个约定的网址登录;
(2)如果用户没有登录就访问网络,典型的是用浏览器访问网站,则弹出登录页面。
方法1容易实现,2对用户来说更方变一些。
方法2可以通过netfliter/iptables实现(?
)。
在路由器上使用iptables命令操作nat表,添加一条nat规则如下,则所有来自指定子网/主机的IP分组会被转向某固定IP。
iptables-tnat-APREROUTING-s172.21.0.0/16-jDNAT--to172.21.1.1
如果用户浏览器访问比如
//172.21.1.1/login.htm">
当用户登录成功后,除了放开路由,再配合使用如下规则让该用户的IP不再被DNAT。
iptables-tnat-IPREROUTING-s172.21.49.238-jRETURN
3.4.1Apache的配置
安装Apache2withSSL。
安装后需要修改配置文件./conf/httpd.conf和./conf/extra/httpd-ssl.conf。
wgethttpd-2.2.2.tar.gz
tarzxfhttpd-2.2.2.tar.gz
cdhttpd-2.2.2
./configure--enable-ssl--prefix=/usr/local/apache2ssl
make
makeinstall
编辑conf/httpd.conf,把尾部的一行去掉注释:
Includeconf/extra/httpd-ssl.conf
修改httpd-ssl.conf,主要是把443改成[:
:
]:
443,准备证书、私钥、CA证书等。
然后:
bin/apachectlstart
使用浏览器访问https:
//~/看看结果。
该Apache只用来提供登录界面。
为把对该站点的所有访问都重定向到login.shtml,在原主页文件头部区域添加:
//172.21.1.1/login.shtml">
并在apache的配置文件中添加一项:
ErrorDocument404/login-redir.shtml
其中login-redir.shtml也是重定向到login.shtml。
为了网页的移植性,在login.shtml等网页中使用了Apache/SSI特性。
具体细节参看部署在211.86.49.110上的一个实例。
4.NAS@211.86.49.110说明
登录110的帐号test,口令cngi,可以用来观察。
文件说明
/root/auto.bat建立BT/IPv6隧道
/root/fw-enb.bat开启防火墙
/root/fw-dis.bat关闭防火墙
/etc/dhcpd.confDHCPv4服务器配置文件(dhcpd进程)
/etc/radvd.confIPv6路由广播配置文件(radvd进程),相当于DHCPv6
/etc/cngiuser.conf用户文件,当前在checkin.cgi中被引用
/usr/local/apache2ssl/中的Apache2相关文件:
conf/httpd.confApache2配置文件
conf/user9.pemSSL证书和私钥
conf/root.pemCA证书
cong/extra/httpd-ssl.confSSL配置文件
htdocs/index.shtml
htdocs/login-redir.shtml网页重定向
htdocs/login.shtml登录表单网页
htdocs/login-en.shtml登录表单网页英文
cgi-bin/checkin.cgi处理登录请求的CGI脚本
5.IPSecinLinux试验
起先,是FreeS/WAN项目实现了IPSec的支持,那时还主要是IPv4年代。
其IPSec栈名叫KLIPS,密钥管理器叫pluto。
但是该项目在04年底废弃了。
还好,OpenSWAN和StrongSWAN两个项目继续和发展了OpenSWAN。
然后,IPSec的另一个项目---KAME项目主要由日本厂商开发的,可用于BSD和Linux,其密钥管理器在linux上叫racoon,在bsd上叫isakmpd。
真正加入到Linux内核2.6的,出乎预料,不是KAME,而是02年由Alexey