linux pptp链路vpn简单配置 » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

linux pptp链路vpn简单配置

服务器:ubuntu 11.10

sudo apt-get install pptpd

修改/etc/pptpd.conf

option /etc/ppp/pptpd-options

noipparam

logwtmp

localip 192.168.119.254
remoteip 192.168.119.2-100
netmask 255.255.255.0

再修改/etc/ppp/pptpd-options

###############################################################################
# $Id$
#
# 这是一个样例Poptop PPP 选项文件,它位于 /etc/ppp/pptpd-options
# 这个文件的选项是用于当有客户端连接时被ppp使用的.
# 这个文件是通过/etc/pptpd.conf文件中的option关键字指向的.
# 这里的改变将对下一个连接生效.  See "man pppd".
###############################################################################
name pptpd

refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128

ms-dns 59.51.78.211
ms-dns 8.8.8.8

proxyarp
nodefaultroute
lock
#nobsdcomp

再修改 /etc/ppp/options

name pptpd 
auth 
require-chap 
-chap 
-mschap 
+mschap-v2 
require-mppe 
lcp-echo-failure 30 
lcp-echo-interval 5 
ipcp-accept-local 
ipcp-accept-remote 
multilink 
noipx
proxyarp 
logfd 2 
logfile /var/log/pptpd.log 
debug 
dump 
lock 

最后,添加用户名和密码

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
hacklog      pptpd   "mypassword"      *

用*表示不限制登录ip,可以通过指定ip地址来限制登录机器的Ip.防止账号被盗用。

ok,差不多了,先启动服务器看看:

sudo /etc/init.d/pptpd start

连接成功了,但是现在还不能通过此vpn通道上网。
因为没有做NAT呢。

cd /etc/sysctl.d
sudo vim 10-network-security.conf

在net.ipv4.tcp_syncookies=1后面加上:

net.ipv4.ip_forward=1

即时生效的方法(要root权限):

echo 1 > /proc/sys/net/ipv4/ip_forward

/sbin/iptables -F FORWARD 
/sbin/iptables -P FORWARD ACCEPT 
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE 
/sbin/iptables -A FORWARD -p udp -s 192.168.119.0/24 --dport 53 -j ACCEPT 
/sbin/iptables -A FORWARD -p tcp -s 192.168.119.0/24 --dport 1723 -j ACCEPT 
/sbin/iptables -A FORWARD -p gre -s 192.168.119.0/24 -j ACCEPT 
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 

1723是vpn server的端口,53是dns的tcp端口。
这几条iptables命令在重启后又会失效的,可用iptables-save来解决。
先保存一下。

# iptables-save > /root/dsl.fw

再编辑/etc/rc.local,加上:

/sbin/iptables-restore < /root/dsl.fw

上面这个方法是对所有Linux通用的。
如果是用的debian/Ubuntu 系统:
把下面这行附加到/etc/network/interfaces文件中eth0 section的后面:

post-up iptables-restore

然后保存文件,重启系统。


一些选项的解释

pptpd.confi配置文件参数详解

option filename

指定一个选项文件,里面的内容作为pptpd进程启动时的命令参数。与执行pptpd命令时使用-o选项指定参数效果是一样的。

stimeout seconds

派生pptpctrl进程处理客户端连接以前,等客户端pptp包的时间,默认为10秒。这个选项主要用于防止Dos攻击。

debug

启用调试模式

bcrelay internal-interface

是否启用广播包中继功能。如果启用将把从internal-interface接口收到的广播包转发给客户端。

connections n

限制客户端连接数,默认100。

delegate

默认情况下,该选项不存在。此时由pptpd进程管理ip地址分配,它将把下一个可分的ip分配给客户端。如果存在该选项,则pptpd进程不负责ip地址的分配,由客户端对应的pppd进程采用radius或chap-secrets方式进行IP分配。

localip ip-specification

在ppp连接隧道的本地端使用的IP地址。如果只指定一个,则所有的客户端对就的服务端都是这个地址。否则,每个客户端都必须要对应不同的服务器端地址。服务端地址用完后,客户端的连接将被拒绝。如果使用了delegate选项,则该选项失效。

remoteip ip-specification

指定分配给远程客户端的IP地址。每个客户端都必须分配到一个IP地址,如果使用了delegate选项,则该选项失效。

noipparam

默认情况下,客户端原始的IP地址是传递给ip-up脚本。如果存在该选项,将不传递。

listen ip-address

指定本地网络接口的IP地址,pptpd进程将只监听这个网络接口的pptpd连接。默认监听所有本地接口。

pidfile pid-file

指定进程pid文件的位置和文件名

speed speed

指定PPTP连接的速度,默认是115200bps。在linux系统中,该选项无效。


options.pptpd(在ubuntu里为 /etc/ppp/options)配置参数详解

auth #需要使用/etc/ppp/chap-secrets文件来验证
lock #锁定PTY设备文件
debug
Proxyarp #启动ARP代理,如果分配给客户端的IP地址与内网网卡在一个子网就需要启用ARP代理。
name pptpd #VPN服务器的名字
multilink
refuse-pap #拒绝pap身份验证
refuse-chap #拒绝chap身份验证
refuse-mschap #拒绝mschap身份验证
require-mschap-v2 #注意在采用mschap-v2身份验证方式时可以同时使用MPPE进行加密
require-mppe-128 #使用 128-bit MPPE 加密
ms-wins 192.168.1.2 #在网络邻居中看到的机器的IP填写到这里
ms-dns 192.168.1.2 #DNS服务器地址

ms-dns 202.102.224.68 #第二个DNS服务器地址
dump
logfile /var/log/pptpd.log #日志存放的路径

参考:
LINUX系统下架设基于PPTP协议的VPN服务器
Linux下架设VPN服务器指南
How Do I Save Iptables Rules or Settings?

Tagged in : vpn,pptp链路

All Comments (0)
Gravatar image
No Comments