)配置samba服务器
()构建基于Linux的VPN网络
构建VPN几乎是Linux的最高级应用之一了学会了这项技术是足以使你自豪的资本VPN的主要用途就是建立一个加密的通信机制然后通过把所有的你的子网的信息按照特定的方式加密传输构成一个逻辑上的虚拟的网络简单的说就是一个Linux系统的IP层加密解决方案这里面需要用到不少组件下面一一介绍
准备工作和安装
. 从下载X的内核除了版本(该版本有一个致命错误)然后把该内核放置到/usr/src中(这里我们使用Linuxtargz)然后释放tar zxvf linuxtargz
. 删除原来的连接rm linux
. ln –s linuxtargz linux
. 检查当前的网卡和SCSI的型号(参见内核升级一章)
. cd linux (进入linux目录)
. make menugonfig
. make dep
. make bzImage
. 编译工作做到这里就打住!
. 从下载gmp库的最新版本到/usr/local/src
. tar zxvf gmptargz
. cd gmp
. /configure
. make
. make install
. 从下载freeswantargz(我们这里使用的版本)到/usr/local/src
. tar zxvf freeswantargz
. 从下载xpatchfreeswantargz 这个是补丁文件释放进入x补丁目录复制freeswandiff到外面的freeswan源目录然后回到freeswan源目录中运行patch –p < freswan.diff
1.19 从下载openssl-0.9.6b版本到/usr/local/src,释放,进入目录
1.20 ./config (如果原来系统中有openssl需要先uninstall再安装,不过一般情况下你可能uninstall不下来8-)。Tw.WinGWit.CoM如果无法uninstall,找到他们的路径,在这里通过—prefix=参数指定路径覆盖旧版本的文件。这里严重建议:如果你没有把握确定路径,最好这样做:到你用的发行包的开发商的FTP站点(如果你用turbolinux就去用redhat就去),用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程序一定要版本以上的)
. 然后检查网卡和硬盘选项是否正确如果没有问题就逐层退出然后保存配置
. 退出后将自动编译内核等待……
. 编译完成后来到/usr/src/linux目录运行make modules;make modules_install
. cp Systemmap /boot/Systemmapvpn
. cd arch/i/boot
. cp bzImage /boot/vmlinuzvpn
. cd /boot
. rm Systemmap
. ln –s Systemmapvpn Systemmap
. vi /etc/nf
增加一段
[aidcode] boot=/dev/sda map=/boot/map install=/boot/bootb prompt timeout= lba default=linuxvpn image=/boot/vmlinuz label=linux initrd=/boot/initrd readonly root=/dev/sda image=/boot/vmlinuzvpn label=linuxvpn initrd=/boot/initrd readonly root=/dev/sda [/aidcode]
. 运行lilo更新数据
. reboot
. 启动后运行ipsec setup restart 应该不报任何错误而正常出现freeswan的版本
注意还有一些必要的内核参数配置这些配置可以在rclocal中实现他们是
[aidcode] echo > /proc/sys/net/ipv/conf/eth/rp_filter echo > /proc/sys/net/ipv/ip_forward [/aidcode]
如果你把下面两项编译成模块(前面扩号是M而不是*)
[aidcode] FTP protocol support (NEW) IRC protocol support (NEW) [/aidcode]
你需要在rclocal中加上:
[aidcode] modprobe ip_nat_ftp [/aidcode]
安装完了接下来我们将说明几种VPN的玩法
配置Frees/wan用于支持双网关通信也就是两个异地的子网通过一对ipsec的VPN网关进行交互访问第一种玩法是网络对网络的VPN一般的某企业在甲乙两地(距离相当远)各有一个办公室每个办公室各有一套LAN他们分别通过专线连接到internet网络上甲LAN上是企业的管理中心运行着企业的管理系统而乙LAN上的用户也需要使用该管理系统尽管乙LAN可以通过internet(公网)连接过去但是企业的老板说不行!我们的数据不能暴露在公网上必须加密!好了我们的VPN网络就可以应用于该企业的这种需求首先在甲乙两个LAN的出口各放置一台我们的Linux服务器他们都安装好了ipsec(前面说的安装步骤一个都不少)两个LAN的数据分别通过各自的这台机器(ipsec gateway)进入公网凡是经过该网关的数据全部都是加密的在效果上两个LAN的用户可以互相ping到对方的机器尽管他们可能一个是/网段另一个是/网段的他们好像在同一个局域网中工作没有界限公共网络的加密部分对他们来说也是透明的而两个LAN在公共网络上交换的数据是密文的这就是虚拟专用网VPN
但愿你已经按照前面的步骤顺利的安装好了两台机器下面我告诉你怎样配置成网对网的环境
. 我们先配置甲网的ipsec网关(该网关有两个网卡我们配置他们的地址分别为eth:和eth:)安装完成后我们首先要做的事情是生成CA证书(用到刚才安装的openssl)
. 找到f文件一般在/etc/ssl/中也可能在/var/ssl中或/usr/ssl中(实在不行你就find / name f找找嘛!)要是有好几个你要搞清楚哪个是你安装的版本改动其中的default_bits选项的值从到然后改动default_days的值到让期限为年!保存退出
. 在/var/中建立一个目录/var/sslca改变该目录的权限为(chmod /var/sslca)
. 在你安装的openssl目录中找到CAsh脚本注意应该是你当前运行的openssl版本的CAsh
. cd /var/sslca 进入到你刚才建立的目录
. 比如你刚才找到的CAsh在/usr/lib/ssl/misc/那么就输入/usr/lib/ssl/misc/CAsh –newca接下来你会被问到一系列问题问题和回答类似于下面的样子如果你确认哪些你有把握更改就改比如公司名称邮件密码等不能确定的就按照下面的样子抄上即可
[aidcode] ~/sslca#/usr/lib/ssl/misc/CAsh newca CA certificate filename (or enter to create) (enter) Making CA certificate Using configuration from /usr/lib/ssl/f Generating a bit RSA private key +++ +++ writing new private key to /demoCA/private//cakeypem Enter PEM pass phrase:(enter password) Verifying password Enter PEM pass phrase:(e