linux 搭建VPN服务器

来源:百度文库 编辑:神马文学网 时间:2024/04/29 00:41:28

linux 搭建VPN服务器­

1.下载相应的安装包。 ­

由于Linux本身并没有集成PPTP功能,所以需要安装相关组件以让我们的RedHat支持PPTP,根据内核的版本,下载相应的安装包,我这里内 ­

核是Linux version 2.6.9-42,进入/temp目录,并下载安装包: ­

#cd /temp ­

#wget http://poptop.sourceforge.net/yum/stable/rhel4/i386/ppp-2.4.3-7.rhel4.i386.rpm ­

#wget http://poptop.sourceforge.net/yum/stable/rhel4/i386/pptpd-1.3.4-1.rhel4.i386.rpm ­

#wget http://poptop.sourceforge.net/yum/stable/rhel4/i386/dkms-2.0.17.5-1.noarch.rpm ­

#wget http://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­