linux 搭建VPN服务器 - Qzone日志

来源:百度文库 编辑:神马文学网 时间:2024/05/04 23:58:25
linux 搭建VPN服务器­
1.下载相应的安装包。 ­
由于Linux本身并没有集成PPTP功能,所以需要安装相关组件以让我们的RedHat支持PPTP,根据内核的版本,下载相应的安装包,我这里内 ­
核是Linux version 2.6.9-42,进入/temp目录,并下载安装包: ­
#cd /temp ­
#wgethttp://poptop.sourceforge.net/yum/stable/rhel4/i386/ppp-2.4.3-7.rhel4.i386.rpm ­
#wgethttp://poptop.sourceforge.net/yum/stable/rhel4/i386/pptpd-1.3.4-1.rhel4.i386.rpm ­
#wgethttp://poptop.sourceforge.net/yum/stable/rhel4/i386/dkms-2.0.17.5-1.noarch.rpm ­
#wgethttp://poptop.sourceforge.net/yum/stable/rhel4/i386/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm ­
2.安装pptpd。 ­
#cd /temp ­
#rpm -Uvh ppp-2.4.3-7.rhel4.i386.rpm   ­
#rpm -ivh pptpd-1.3.4-1.rhel4.i386.rpm ­
#rpm -ivh dkms-2.0.17.5-1.noarch.rpm ­
#rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm ­
3.加载内核模块 ­
检查kernel module是否正常 ­
#modprobe ppp-compress-18 && echo ok ­
ok ­
如果出现OK就说明是正常的
#modprobe ppp-compress-18 && echo ok ­
FATAL: Module ppp_mppe not found. ­
Install them with command "rpm -ivh". ­
出现此提示,表明模块没有加载成功,或者内核源代码没有安装,按照以上步骤应该是不会出现此错误 ­
4.vpn服务器设置
定制网络设置,注意如果存在多个内网网卡,则需要在vpn中设定路由表,否则过别情况无法访问到内网 ­
内网卡:192.168.0.200(并配置router:route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.0.1)
外网卡:202.177.14.X ­
#cd /etc/sysconfig/network-scripts ­
#vi ifcfg-eth0 ­
--------------------------------------------------- ­
DEVICE=eth0 ­
BOOTPROTO=static ­
HWADDR=00:0C:2F:58:F4:4E ­
IPADDR=192.168.0.200 ­
NETMASK=255.255.255.0 ­
ONBOOT=yes ­
TYPE=Ethernet ­
--------------------------------------------------- ­
5.配置pptpd ­
#vi /etc/pptpd.conf ­
___________________________________ ­
ppp /usr/sbin/pppd
debug
localip 192.168.219.1
remoteip 192.168.219.2-254
-------------------------------------------------------------- ­
#vi /etc/ppp/options.pptpd ­
----------------------------------- ­
auth
lock
debug
proxyarp
lock
name 3gvpn
multilink
refuse-pap
refuse-chap
refuse-mschap
refuse-eap
refuse-mschap-v2
require-mppe
dump
logfile /var/log/pptpd.log
----------------------------------- ­
#vi /etc/ppp/chap-secrets ­
--------------------------------------------------------------- ­
# Secrets for authentication using CHAP ­
# client        server          secret                IP addresses ­
"username"    pptpd           "yourpassword"        "*" ­
"admin"       pptpd           "password"            "192.168.219.2" ­
--------------------------------------------------------------- ­
每行一个用户信息,分别采用以上格式,用""引用,虽然是明文,但最好设置让此文件非属主不能够读 ­
如果一个用户分配一个固定ip,则可以进一步进行行为控制,方便你的管理 ­
6.创建一个脚本
创建一个脚本文件,用于启用iptables转发功能,实现中转上网,否则无法正常工作,并使此文件开机自启动! ­
#vi vpn_forward ­
#!/bin/bash ­
#2008.11.19 ­
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH
myvar=`iptables -L -t nat | grep SNAT`
if [ "X$myvar" = "X" ]; then
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to-source  202.177.14.X
fi
myvar=`cat /proc/sys/net/ipv4/ip_forward`
if [ "X$myvar" = "X0" ]; then
echo "1" > /proc/sys/net/ipv4/ip_forward
fi  ­
复制代码
#chmod +x vpn_forward ­
#cp vpn_forward /etc/rc.d/init.d/vpn_forward ­
#ln -s /etc/rc.d/init.d/vpn_forward /etc/rc.d/rc3.d/S94vpn_forward ­
说明: ­
其实可以在/etc/init.d/iptables­中的start()那段代码中加入
if [ -f /usr/local/sbin/iptables.sh ]; then
/usr/local/sbin/iptables.sh
fi
这样就可以让我们前面写的脚本随iptables而启动或重启。
­
7.确保已经加载以下模块,主要针对内核版本而言, 否则NAT将不能够很好工作,在有些版本中可能存在问题 ­
# modprobe -l >/home/modprode ­
# less modprode |grep ip_tables ­
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/netfilter/ip_tables.ko ­
# less modprode |grep ip_conntrack_ftp ­
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/netfilter/ip_conntrack_ftp.ko ­
# less modprode |grep ip_conntrack ­
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/netfilter/ip_conntrack_tftp.ko ­
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/netfilter/ip_conntrack_proto_sctp.ko ­
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/netfilter/ip_conntrack_amanda.ko ­
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/netfilter/ip_conntrack.ko ­
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/netfilter/ip_conntrack_irc.ko ­
/lib/modules/2.6.9-42.ELsmp/kernel/net/ipv4/netfilter/ip_conntrack_ftp.ko­