12)配置samba服务器
(13)构建基于Linux的VPN网络
构建VPN几乎是Linux的最高级应用之一了,学会了这项技术,是足以使你自豪的资本。VPN的主要用途就是建立一个加密的通信机制,然后通过把所有的你的子网的信息按照特定的方式加密传输,构成一个逻辑上的虚拟的网络。简单的说,就是一个Linux系统的IP层加密解决方案。这里面需要用到不少组件,下面一一介绍。
1、预备工作和安装
1.1 从http://www.kernel.org下载2.4.X的内核,除了2.4.15版本(该版本有一个致命错误)。然后把该内核放置到:/usr/src中。(这里我们使用Linux-2.4.18.tar.gz),然后释放:tar zxvf linux-2.4.18.tar.gz
1.2 删除原来的连接rm linux
1.3 ln –s linux-2.4.18.tar.gz linux
1.4 检查当前的网卡和SCSI的型号(参见内核升级一章)
1.5 cd linux (进入linux-2.4.18目录)
1.6 make menugonfig
1.7 make dep
1.8 make bzImage
1.9 编译工作做到这里就打住!
1.10 从http://www.swox.com/gmp 下载gmp库的最新版本到/usr/local/src。
1.11 tar zxvf gmp-4.0.1.tar.gz
1.12 cd gmp-4.0.1
1.13 ./configure
1.14 make
1.15 make install
1.16 从http://www.freeswan.org下载freeswan-1.97.tar.gz(我们这里使用的版本)到/usr/local/src
1.17 tar zxvf freeswan-1.97.tar.gz
1.18 从http://www.strongsec.com/freeswan/ 下载x509patch-0.9.11-freeswan-1.97.tar.gz ,这个是补丁文件。释放,进入x509补丁目录,复制freeswan.diff到外面的freeswan源目录,然后回到freeswan源目录中运行:patch –p1
1.19 从http://www.openssl.org下载openssl-0.9.6b版本到/usr/local/src,释放,进入目录
1.20 ./config (假如原来系统中有openssl需要先uninstall再安装,不过一般情况下你可能uninstall不下来8-)。假如无法uninstall,找到他们的路径,在这里通过—prefix=参数指定路径覆盖旧版本的文件。这里严重建议:假如你没有把握确定路径,最好这样做:到你用的发行包的开发商的FTP站点(假如你用turbolinux就去ftp.turbolinux.com用redhat就去ftp.redhat.com),用anonymous用户和随便一个电子邮件作为密码登陆,找到你用的发行包版本的生气目录,然后下载相应的RPM包,注重:这里的包至少应该是0.9.6b1以上的i386版本。下载完毕后用rpm –Uvh更新。这样做完了很干净。
1.21 make (假如你用rpm包升级就不用这个步骤了)
1.22 make test (假如你用rpm包升级就不用这个步骤了)
1.23 make install (假如你用rpm包升级就不用这个步骤了)安装完了以后执行openssl命令,输入version看看是不是你刚刚安装的版本。假如不是,可能没有覆盖原来安装的旧版本。从1.20重新来过
1.24 然后回到freeswan的源目录,运行:make menugo,在networking options中选择关于iptables和ipsec相关的所有选项。其中ipsec是freeswan加上的,最好把前面括号中M(模块方式)换成*(编译进内核)。下列内核选项应该选上:
进入:Networking Options至少选择上:
[aidcode]
Network packet filtering (replaces ipchains)
Network packet filtering debugging (NEW) 进入:IP: Netfilter Configuration --- Connection tracking (required for masq/NAT) (NEW) FTP protocol support (NEW) IRC protocol support (NEW) [/aidcode]
注重:假如你需要使用DHCP功能,需要增加Pachet Socket mmapped IO和Socket Filtering两个选项,参见DHCP一章。
等等……
把下面的选项全部标记
返回上一层菜单后,把列表选项最下面的凡是IPSEC相关的选项全部选为。另外的,假如你打算使用拨号连接请在网络设备支持菜单选择ppp支持(注重,你用的ppp程序一定要2.4版本以上的)
1.25 然后检查网卡和硬盘选项是否正确,假如没有问题就逐层退出,然后保存配置。
1.26 退出后将自动编译内核,等待……
1.27 编译完成后,来到/usr/src/linux目录,运行:make modules;make modules_install
1.28 cp System..map /boot/System.map-2.4.18-vpn
1.29 cd arch/i386/boot
1.30 cp bzImage /boot/vmlinuz-2.4.18-vpn
1.31 cd /boot
1.32 rm System.map
1.33 ln –s System.map-2.4.18-vpn System.map
1.34 vi /etc/lilo.conf
增加一段:
[aidcode] boot=/dev/sda map=/boot/map install=/boot/boot.b prompt timeout=50 lba32 default=linux-vpn image=/boot/vmlinuz label=linux initrd=/boot/initrd read-only root=/dev/sda5 image=/boot/vmlinuz-2.4.18-vpn label=linux-vpn initrd=/boot/initrd read-only root=/dev/sda5 [/aidcode]
1.35 运行lilo更新数据
1.36 reboot
1.37 启动后,运行:ipsec setup restart 应该不报任何错误而正常出现freeswan的版本。
注重:还有一些必要的内核参数配置,这些配置可以在rc.local中实现。他们是:
[aidcode] echo 0
/proc/sys/net/ipv4/conf/eth0/rp_filter echo 1
/proc/sys/net/ipv4/ip_forward [/aidcode]
假如你把下面两项编译成模块(前面扩号是M而不是*):
[aidcode] FTP protocol support (NEW) IRC protocol support (NEW) [/aidcode]
你需要在rc.local中加上:
[aidcode] modprobe ip_nat_ftp [/aidcode]
安装完了,接下来我们将说明几种VPN的玩法。
2、配置Frees/wan用于支持双网关通信。也就是两个异地的子网通过一对ipsec的VPN网关进行交互访问。第一种玩法是网络对网络的VPN。一般的,某企业在甲乙两地(距离相当远)各有一个办公室,每个办公室各有一套LAN,他们分别通过专线连接到internet网络上。甲LAN上是企业的治理中心,运行着企业的治理系统。而乙LAN上的用户也需要使用该治理系统,尽管乙LAN可以通过internet(公网)连接过去,但是企业的老板说不行!我们的数据不能暴露在公网上,必须加密!好了,我们的VPN网络就可以应用于该企业的这种需求。首先在甲乙两个LAN的出口各放置一台我们的Linux服务器,他们都安装好了ipsec(前面说的安装步骤一个都不少),两个LAN的数据分别通过各自的这台机器(ipsec gateway)进入公网,凡是经过该网关的数据全部都是加密的。在效果上,两个LAN的用户可以互相ping到对方的机器,尽管他们可能一个是192.168.1.0/24网段,另一个是192.168.10.0/24网段的。他们似乎在同一个局域网中工作,没有界限。公共网络的加密部分对他们来说也是透明的。而两个LAN在公共网络上交换的数据是密文的。这就是虚拟专用网VPN。
但愿你已经按照前面的步骤顺利的安装好了两台机器,下面我告诉你怎样配置成网对网的环境。
2.1 我们先配置甲网的ipsec网关(该网关有两个网卡,我们配置他们的地址分别为eth1:192.168.1.231和eth0:211.99.223.22)。安装完成后,我们首先要做的事情是生成CA证书。(用到刚才安装的openssl)
2.2 找到openssl.cnf文件,一般在/etc/ssl/中,也可能在/var/ssl中或/usr/ssl中(实在不行你就find / -name “openssl.cnf”找找嘛!),要是有好几个,你要搞清楚哪个是你安装的版本。改动其中的default_bits选项的值从1024到2048,然后改动default_days的值到3650。让期限为10年!保存退出。
2.3 在/var/中建立一个目录:/var/sslca,改变该目录的权限为700(chmod 700 /var/sslca)
2.4 在你安装的openssl目录中找到CA.sh脚本。注重,应该是你当前运行的openssl版本的CA.sh
2.5 cd /var/sslca 进入到你刚才建立的目录
2.6 比如你刚才找到的CA.sh在/usr/lib/ssl/misc/,那么就输入/usr/lib/ssl/misc/CA.sh –newca,接下来你会被问到一系列问题。
问题和回答类似于下面的样子。假如你确认哪些你有把握更改就改,比如公司名称、邮件、密码等。不能确定的就按照下面的样子抄上即可。
[aidcode] ~/sslca#/usr/lib/ssl/misc/CA.sh -newca CA certificate filename (or enter to create) (enter) Making CA certificate ... Using configuration from /usr/lib/ssl/openssl.cnf Generating a 2048 bit RSA private key ........................................+++ ........................................+++ writing new private key to './demoCA/private/./cakey.pem' Enter PEM pass phrase:(enter passWord) Verifying password - Enter PEM pass phrase:(e