标签 vpn 下的文章

一键安装拨号vpn pptp脚本

一些特殊注意事项

(1) ppp-2.4.4-14.1.rhel5.x86_64.rpm
PPTP需要PPP的支持,一般情况下linux系统都已安装有PPP软件包,最好安装较新的ppp软件包,用Uvh这个参数来更新系统的PPP组件。也可以用yum –y instll ppp命令安装。

(2) pptpd-1.3.4-2.rhel5.x86_64.rpm (pptpd服务软件)

(3) dkms-2.0.17.5-1.noarch.rpm CentOS5x/RHEL5x(内核支持mppe)不用安装
DKMS全称是 Dynamic Kernel Module Support,它可以帮我们维护内核外的这些驱动程序,在内核版本变动之后可以自动重新生成新的模块。

(4) kernel_ppp_mppe-1.0.2-3dkms.noarch(MPPE的内核补丁),CentOS5x/RHEL5x(内核支持mppe)不用安装

(5) 在ADSL拨号环境中由于PPP包头占用8字节,MTU为1492字节,MSS为1452字节,如不能正确设置会导致网络不正常,可以通过TCPMSS模块调整MSS大小
关于iptables的:MASQUERADE
假如当前系统用的是ADSL动态拨号方式,那么每次拨号,出口ip192.168.5.3都会改变
而且改变的幅度很大,不一定是192.168.5.3到192.168.5.5范围内的地址
这个时候如果按照现在的方式来配置iptables就会出现问题了
因为每次拨号后,服务器地址都会变化,而iptables规则内的ip是不会随着自动变化的
每次地址变化后都必须手工修改一次iptables,把规则里边的固定ip改成新的ip
这样是非常不好用的
MASQUERADE就是针对这种场景而设计的,他的作用是,从服务器的网卡上,自动获取当前ip地址来做NAT
比如下边的命令:

iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE

如此配置的话,不用指定SNAT的目标ip了
不管现在eth0的出口获得了怎样的动态ip,MASQUERADE会自动读取eth0现在的ip地址然后做SNAT出去
这样就实现了很好的动态SNAT地址转换

注:
对于MASQUERADE,只是计算机的负荷稍微多一点。因为对每个匹配的包,MASQUERADE都要查找可用的IP地址,而不象SNAT用的IP地址 是配置好的。当然,这也有好处,就是我们可以使用通过PPP、 PPPOE、SLIP等拨号得到的地址,这些地址可是由ISP的DHCP随机分配的。

#!/bin/bash
wget https://fastlnmp.googlecode.com/files/dkms-2.0.17.5-1.noarch.rpm -p /usr/local/src/
wget https://fastlnmp.googlecode.com/files/ppp-2.4.4-9.0.rhel5.i386.rpm -p /usr/local/src/
wget https://acelnmp.googlecode.com/files/pptpd-1.3.4-2.rhel5.x86_64.rpm -p /usr/local/src/
yum -y install make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers
rpm -ivh dkms-2.0.17.5-1.noarch.rpm
rpm -Uvh ppp-2.4.4-9.0.rhel5.i386.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.x86_64.rpm
#mknod /dev/ppp c 108 0
echo 1 > /proc/sys/net/ipv4/ip_forward
#echo “mknod /dev/ppp c 108 0” >> /etc/rc.local
echo “echo 1 > /proc/sys/net/ipv4/ip_forward” >> /etc/rc.local
echo “localip 192.168.88.1” >> /etc/pptpd.conf
echo “remoteip 192.168.88.50-254” >> /etc/pptpd.conf
echo “ms-dns 8.8.8.8” >> /etc/ppp/options.pptpd
echo “ms-dns 8.8.4.4” >> /etc/ppp/options.pptpd
pass=`openssl rand 6 -base64`
if [ “$1” != “” ]
then pass=$1
fi
echo “vpn pptpd ${pass} *” >> /etc/ppp/chap-secrets
iptables -t nat -A POSTROUTING -s 192.168.88.0/255.255.255.0 -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp –syn -s 192.168.88.0/24 -j TCPMSS –set-mss 1356
service iptables save
chkconfig iptables on
chkconfig pptpd on
service iptables start
service pptpd start
echo “VPN service is installed, your VPN username is vpn, VPN password is ${pass}”

 

转自http://blog.coocla.org/185.html

Centos PPTP VPN yum安装配置

通过 yum 方式安装的好处是便于管理,可以通过 yum update 命令来升级程序版本。
安装 ppp 和 iptalbes
yum install ppp iptables
安装 pptpd
加入 yum 源
rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
安装 pptpd
yum install pptpd
——————————— 设置 ————————————
开启路由转发
vim  /etc/sysctl.conf
修改
net.ipv4.ip_forward = 1
执行:
/sbin/sysctl -p 让修改的内核参数生效
配置
vim /etc/ppp/options.pptpd
修改:
ms-dns 4.2.2.1 当地能用的dns
ms-dns 4.2.2.2
vim  /etc/pptpd.conf
修改 :
localip 10.8.8.1 为vpn管道的ip (VPN主机IP)
remoteip 10.8.8.2-245 为给客户端连接分配的ip地址范围
开机启动、运行
chkconfig pptpd on
service pptpd start
添加账号
echo -e ‘vpntest * vpntestpassword *’ >> /etc/ppp/chap-secrets
注:chap-secrets保存的信息客户端连接信息依次是:用户名,服务名,密码,允许的ip。服务名在options.pptpd的name定义,默认为pptpd
iptables 配置
chkconfig iptables on
/sbin/iptables -A INPUT -p tcp –dport 1723 -j ACCEPT
/sbin/iptables -A INPUT -p tcp –dport 47 -j ACCEPT
/sbin/iptables -A INPUT -p gre -j ACCEPT
iptables -A POSTROUTING -t nat -s 10.10.10.0/24 -o eth0 -j MASQUERADE
service iptables start

 

Pptp+FreeRadius+Ldap实现VPN用户认证

由于公司使用OpenLDAP统一管理员工的账号密码信息
而现在需要搭建VPN以方便出差员工能访问公司内部网络
在对比流行的几种VPN类型后,选择了PPTP方式
OpenVPN/ipsec VPN虽然安全性比较高,但操作较麻烦,而公司大多数的员工对电脑都不是太懂,所以放弃
PS: 本人只讲如何结合PPTP+Freeradius+LDAP,并不涉及PPTP及LDAP的配置
系统环境: Centos 6.4 x86_64      已经配置好PPTP及LDAP

配置Radius
1.安装Radius:

[root@ldap ~]# yum install freeradius freeradius-ldap freeradius-utils

2.测试
编辑

/etc/raddb/users

 ,在最后加入一行

test Cleartext-Password := "123456"

启动radius

[root@ldap ~]# /etc/init.d/radiusd start

测试服务器是否连通

[root@ldap ~]# radtest test 123456 localhost 0 testing123
# 解释: # radtest username password server port key

如果看到Access-Accept就说明连接成功了。如果看到类似“Ignoring request to authentication address * port 1812 from unknownclient”的文字, 可能需要去修改

/etc/raddb/clients.conf

,将

client localhost

段下的

ipaddr

改为服务器的IP,而不是127.0.0.1。

在测试成功之后,就可以将 

/etc/raddb/users

中添加的内容删除掉了

3. 下载ppp源码,需要用到其中radius的配置文件

[root@ldap ~]# tar zxvf ppp-2.4.5.tar.gz
[root@ldap ~]# cp

 

-R

 

/root/ppp-2.4.5/pppd/plugins/radius/etc/ /etc/radiusclient

4. 编辑

/etc/radiusclient/servers

,添加服务器和密钥

1
[root@ldap ~]# echo 'localhost MyVPN' >> /etc/radiusclient/servers

5. 下载

dictionary.microsoft

字典文件

[root@ldap ~]# cp dictionary.microsoft /etc/radiusclient/

 

-f

6. 更改 

/etc/radiusclient/dictionary

 文件
在文件末尾加入两行
INCLUDE /etc/radiusclient/dictionary.merit
INCLUDE /etc/radiusclient/dictionary.microsoft

7. 修改 /etc/raddb/clients.conf 文件

[root@ldap ~]# grep

 

-v

 

'#' /etc/raddb/clients.conf  | grep

 

-v
'^$'
client localhost {
    
ipaddr = 127.0.0.1
    
secret  = MyVPN
    
require_message_authenticator = no
    
shortname   = pptp
}

8. 更改 /etc/raddb/radiusd.conf

[root@ldap ~]# grep

 

-v

 

'#' /etc/raddb/radiusd.conf  | grep

 

-v
'^$'
prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = /usr/sbin
logdir = ${localstatedir}/log/radius
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
name = radiusd
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/${name}
db_dir = ${raddbdir}
libdir = /usr/lib64/freeradius
pidfile = ${run_dir}/${name}.pid
user = radiusd
group = radiusd
max_request_time = 30
cleanup_delay = 5
max_requests = 1024
listen {
    
type = auth
    
ipaddr = *
    
port = 0
}
listen {
    
ipaddr = *
    
port = 0
    
type = acct
}
hostname_lookups = no
allow_core_dumps = no
regular_expressions = yes
extended_expressions    = yes
log {
    
destination = files
    
file = ${logdir}/radius.log
    
syslog_facility = daemon
    
stripped_names = no
    
auth = no
    
auth_badpass = no
    
auth_goodpass = no
}
checkrad = ${sbindir}/checkrad
security {
    
max_attributes = 200
    
reject_delay = 1
    
status_server = yes
}
proxy_requests  = yes
$INCLUDE proxy.conf
$INCLUDE clients.conf
thread pool {
    
start_servers = 5
    
max_servers = 32
    
min_spare_servers = 3
    
max_spare_servers = 10
    
max_requests_per_server = 0
}
modules {
    
mschap {
        
use_mppe = yes
        
require_encryption = yes
        
require_strong = yes
    
}
    
$INCLUDE ${confdir}/modules/
    
$INCLUDE eap.conf
}
instantiate {
    
exec
    
expr
    
expiration
    
logintime
}
$INCLUDE policy.conf
$INCLUDE sites-enabled/

9.  编辑 /etc/raddb/sites-available/default

authorize {
    
preprocess
    
chap
    
mschap
    
digest
    
suffix
    
eap {
        
ok = return
    
}
    
files
    
ldap
    
expiration
    
logintime
    
pap
}
authenticate {
    
Auth-Type PAP {
        
pap
    
}
    
Auth-Type CHAP {
        
chap
    
}
    
Auth-Type MS-CHAP {
        
mschap
    
}
    
digest
    
unix
    
Auth-Type LDAP {
        
ldap
    
}
    
eap
}
preacct {
    
preprocess
    
acct_unique
    
suffix
    
files
}
accounting {
    
detail
    
unix
    
radutmp
    
exec
    
attr_filter.accounting_response
}
session {
    
radutmp
}
post-auth {
    
exec
    
Post-Auth-Type REJECT {
        
attr_filter.access_reject
    
}
}
pre-proxy {
}
post-proxy {
    
eap
}

10.  编辑 /etc/raddb/modules/ldap

[root@ldap ~]# grep

 

-v

 

'#' /etc/raddb/modules/ldap  | grep

 

-v
'^$'
ldap {
    
server = "localhost"
    
identity = "cn=root,dc=verystar,dc=cn"
    
password = 此处为LDAP root的密码
    
basedn = "ou=Users,dc=verystar,dc=cn"
    
filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
    
password_attribute = userPassword
    
ldap_connections_number = 5
    
timeout = 4
    
timelimit = 3
    
net_timeout = 1
    
tls {
        
start_tls = no
    
}
    
dictionary_mapping = ${confdir}/ldap.attrmap
    
edir_account_policy_check = no
    
keepalive {
        
idle = 60
        
probes = 3
        
interval = 3
    
}
}

11. 编辑  /etc/raddb/proxy.conf

[root@ldap ~]# grep

 

-v

 

'#' /etc/raddb/proxy.conf  | grep

 

-v
'^$'
proxy server {
    
default_fallback = no
}
home_server localhost {
    
type = auth
    
ipaddr = 127.0.0.1
    
port = 1812
    
secret = testing123
    
require_message_authenticator = yes
    
response_window = 20
    
zombie_period = 40
    
revive_interval = 120
    
status_check = status-server
    
check_interval = 30
    
num_answers_to_alive = 3
    
max_outstanding = 65536
    
coa {
        
irt = 2
        
mrt = 16
        
mrc = 5
        
mrd = 30
    
}
}
home_server_pool my_auth_failover {
    
type = fail-over
    
home_server = localhost
}
realm example.com {
    
auth_pool = my_auth_failover
}
realm LOCAL {
    
type        = radius
    
authhost    = LOCAL
    
accthost    = LOCAL
}
realm NULL {
    
authhost    = LOCAL
    
accthost    = LOCAL
    
secret      = MyVPN
    
type        = radius
    
nostrip
}
# 更改最后两段就行了

12. 为LDAP添加radius支持

[root@ldap ~]# cp /usr/share/doc/freeradius-2.1.12/examples/openldap.schema /etc/openldap/schema/radius.schema
[root@ldap ~]# vim /etc/openldap/slapd.conf
添加一行
include         /etc/openldap/schema/radius.schema

13. 修改 /etc/ppp/options.pptpd ,添加对radius的支持
在文件最后添加以下三行
plugin /usr/lib64/pppd/2.4.5/radius.so
plugin /usr/lib64/pppd/2.4.5/radattr.so
radius-config-file      /etc/radiusclient/radiusclient.conf

14.修改 /etc/radiusclient/radiusclient.conf ,将里面所有配置文件路径由 /usr/local/etc/xxx 改为 /etc/xxx

[root@ldap ~]# grep

 

-v

 

'#' /etc/radiusclient/radiusclient.conf  | grep

 

-v

 

'^$'
auth_order  radius
login_tries 4
login_timeout   60
nologin /etc/nologin
issue   /etc/radiusclient/issue
authserver  localhost:1812
acctserver  localhost:1813
servers     /etc/radiusclient/servers
dictionary  /etc/radiusclient/dictionary
login_radius    /usr/local/sbin/login.radius
seqfile     /var/run/radius.seq
mapfile     /etc/radiusclient/port-id-map
default_realm
radius_timeout  10
radius_retries  3
login_local /bin/login

15. 重启 radius / pptpd / slapd

[root@ldap ~]# /etc/init.d/slapd restart
[root@ldap ~]# /etc/init.d/pptpd restart
[root@ldap ~]# /etc/init.d/radiusd restart

Centos6.3 X_86.64 路由模式配置OpenVPN服务器

转自www.gaobiao.org

1、安装前的准备工作:

[root@data ~]# yum -y install openssl openssl-devel gcc

[root@data ~]# wget http://swupdate.openvpn.org/community/releases/openvpn-2.2.2.tar.gz

[root@data ~]# wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz

2、安装lzo软件包:
 lzo软件包用于压缩隧道通信数据以加快传输速度,操作步骤如下  :
[root@data ~]# tar zxvf lzo-2.03.tar.gz
[root@data ~]# cd lzo-2.03
[root@data lzo-2.03]# ./configure –prefix=/usr/ && make && make install
 4、安装openvn:

 [root@data ~]# tar zxvf openvpn-2.2.2.tar.gz

[root@data ~]# cd openvpn-2.2.2

[root@data openvpn-2.2.2]# ./configure –with-lzo-lib=/usr/ && make && make install
 (1、)建立CA的详细信息   
5、OpenVPN 服务器的配置
[root@data ~]# cd openvpn-2.2.2/easy-rsa/2.0/
[root@data 2.0]# vim vars
export KEY_COUNTRY=”CN”        \你所在的国家,两个字符为限
export KEY_PROVINCE=”HN”        \你所在的省份
export KEY_CITY=”changsha”        \你所在的城市
export KEY_ORG=”cn6677″         \你所在的组织
export KEY_EMAIL=”1250052800@qq.com”     \你的电子邮件
export KEY_OU=cn6677.com    \你所在的单位

接下来输入如下命令:

[root@data 2.0]# source vars   //此命令输入后会显示如下信息
NOTE: If you run ./clean-all, I will be doing a rm -rf on /root/openvpn-2.2.2/easy-rsa/2.0/keys
接着输入下面的命令:
[root@data 2.0]# cp openssl-1.0.0.cnf openssl.cnf
[root@data 2.0]# ./clean-all
[root@data 2.0]# ./build-ca   //一路回车即可会生成 root CA证书
为服务器生成Diffie-Hellman文件,后面配置OpenVPN Server时所需要用到的文件命令如下:
(2)、为服务器生成证书和密钥,命令如下:
[root@data 2.0]# ./build-key-server server
还是与上一步类似,
[root@data 2.0]# ./build-key-server server
Generating a 1024 bit RSA private key
…..++++++
………..++++++
writing new private key to ‘server.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [CN]:
State or Province Name (full name) [HN]:
Locality Name (eg, city) [Hunan]:
Organization Name (eg, company) [cn6677]:
Organizational Unit Name (eg, section) [cn6677.com]:
Common Name (eg, your name or your server’s hostname) [server]:
Name [changeme]:
Email Address [mail@host.domain]:Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:cn6677.com
Using configuration from /root/openvpn-2.2.2/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName                     :PRINTABLE:’CN’
stateOrProvinceName     :PRINTABLE:’HN’
localityName                    :PRINTABLE:’Hunan’
organizationName            :PRINTABLE:’cn6677′
organizationalUnitName:PRINTABLE:’cn6677.com’
commonName                        :PRINTABLE:’server’
name                                    :PRINTABLE:’changeme’
emailAddress                    :IA5STRING:’mail@host.domain’
Certificate is to be certified until Nov 27 22:02:42 2022 GMT (3650 days)
Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

生成 用户证书和上面一样,只是名字不同,命令如下:

[root@data 2.0]# ./build-key yonghu

正常结束上面过程后我们可以看到keys目录生成了正常的证书文件,用以下命令可以看到:

[root@data 2.0]# ll keys/
总用量 68
-rw-r–r–. 1 root root 4038 11月 30 06:02 01.pem
-rw-r–r–. 1 root root 3917 11月 30 06:07 02.pem
-rw-r–r–. 1 root root 1338 11月 30 05:55 ca.crt
-rw——-. 1 root root    912 11月 30 05:55 ca.key
-rw-r–r–. 1 root root    245 11月 30 05:58 dh1024.pem
-rw-r–r–. 1 root root    250 11月 30 06:07 index.txt
-rw-r–r–. 1 root root     21 11月 30 06:07 index.txt.attr
-rw-r–r–. 1 root root     21 11月 30 06:02 index.txt.attr.old
-rw-r–r–. 1 root root    125 11月 30 06:02 index.txt.old
-rw-r–r–. 1 root root        3 11月 30 06:07 serial
-rw-r–r–. 1 root root        3 11月 30 06:02 serial.old
-rw-r–r–. 1 root root 4038 11月 30 06:02 server.crt
-rw-r–r–. 1 root root    781 11月 30 06:02 server.csr
-rw——-. 1 root root    916 11月 30 06:02 server.key
-rw-r–r–. 1 root root 3917 11月 30 06:07 yonghu.crt
-rw-r–r–. 1 root root    781 11月 30 06:07 yonghu.csr
-rw——-. 1 root root    912 11月 30 06:07 yonghu.key
(3、)修改OpenVPN的配置文件/etc/server.conf
1)、复制示例文件到/etc目录下,然后再在其基础下进行更改,命令如下:
[root@data 2.0]# cp /root/openvpn-2.2.2/sample-config-files/server.conf /etc/server.conf
2、)编辑/etc/server.conf,注意以下几个重点:
一是将proto udp 改为proto tcp ,即服务启动用TCP 1194端口。
二是将ca那4行内容改成如下所示的形式(记得写绝对路径):
ca /root/openvpn-2.2.2/easy-rsa/2.0/keys/ca.crt
ca后面接的是 root CA 它使用的是buid-ca生成的,用于验证客户端证书是否合法的。
cert /root/openvpn-2.2.2/easy-rsa/2.0/keys/server.crt
key /root/openvpn-2.2.2/easy-rsa/2.0/keys/server.key
上面是服务器对应的证书等相关文件
dh /root/openvpn-2.2.2/easy-rsa/2.0/keys/dh1024.pem
三是将server那行改为如下内容:

server 10.8.0.0 255.255.255.0    //这是OpenVPN服务器启动时为VPN网络分配的网段,注意不要与公网中的IP发生冲突。

四是将verb3改为verb4
3、)启动OpenVPN
1、关闭iptables和selinux,以免对OpenVPN造成不必要的干扰
2、开启系统中自带的IP转发功能,命令如下:
[root@data keys]# echo “1″ >/proc/sys/net/ipv4/ip_forward
3、用命令启动OpenVPN,命令如下:
[root@data keys]# /usr/local/sbin/openvpn –config /etc/server.conf
如果看到 Initialization Sequence Completed 表示启动成功
用lsof -i:1194来验证一下2、)编辑/etc/server.conf,注意以下几个重点:
一是将proto udp 改为proto tcp ,即服务启动用TCP 1194端口。
二是将ca那4行内容改成如下所示的形式(记得写绝对路径):
ca /root/openvpn-2.2.2/easy-rsa/2.0/keys/ca.crt
ca后面接的是 root CA 它使用的是buid-ca生成的,用于验证客户端证书是否合法的。
cert /root/openvpn-2.2.2/easy-rsa/2.0/keys/server.crt
key /root/openvpn-2.2.2/easy-rsa/2.0/keys/server.key
上面是服务器对应的证书等相关文件
dh /root/openvpn-2.2.2/easy-rsa/2.0/keys/dh1024.pem
三是将server那行改为如下内容:

server 10.8.0.0 255.255.255.0    //这是OpenVPN服务器启动时为VPN网络分配的网段,注意不要与公网中的IP发生冲突。

四是将verb3改为verb4
3、)启动OpenVPN
1、关闭iptables和selinux,以免对OpenVPN造成不必要的干扰
2、开启系统中自带的IP转发功能,命令如下:
[root@data keys]# echo “1″ >/proc/sys/net/ipv4/ip_forward
3、用命令启动OpenVPN,命令如下:
[root@data keys]# /usr/local/sbin/openvpn –config /etc/server.conf
如果看到 Initialization Sequence Completed 表示启动成功
用lsof -i:1194来验证一下
[root@data keys]# lsof -i:1194
COMMAND     PID USER     FD     TYPE DEVICE SIZE/OFF NODE NAME
openvpn 20074 root        5u    IPv4    94836            0t0    TCP *:openvpn (LISTEN)

OpenVPN局对局配置成功了。

转自www.gaobiao.org