PPTP VPN 服务器

本文节选自《Netkiller Linux 手札》

作者:netkiller

地址:www.netkiller.cn/linux/

38.2. pptpd

38.2.1. Server 服务端

过程 38.11. pptpd 安装步骤

  1. install Ubuntu $ sudo apt-get install pptpd CentOS # yum install pptp pptp-setup
  2. $ sudo vim /etc/pptpd.conf localip 172.16.0.1 remoteip 172.16.0.50-100
  3. $ sudo vim /etc/ppp/pptpd-options ms-dns 208.67.222.222 ms-dns 208.67.220.220
  4. $ sudo vim /etc/ppp/chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses neo pptpd chen *
  5. restart sudo /etc/init.d/pptpd restart Restarting PPTP: Stopping PPTP: pptpd. Starting PPTP Daemon: pptpd.
  6. # ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:192.168.3.9 P-t-P:192.168.3.15 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1 RX packets:1545 errors:0 dropped:0 overruns:0 frame:0 TX packets:1008 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:342505 (334.4 KiB) TX bytes:239324 (233.7 KiB)
  7. $ sudo vim /etc/sysctl.conf # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 refresh status $ sudo sysctl -p net.ipv4.ip_forward = 1
  8. NAT $ sudo iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j MASQUERADE $ sudo iptables-save > /etc/iptables-rules $ sudo vim /etc/network/interfaces pre-up iptables-restore < /etc/iptables-rules
  9. firewall $ sudo ufw allow 1723 Rules updated

MTU

$ sudo iptables -A FORWARD -s 10.100.0.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1200

还有一个最简单的修改mtu的办法:
$ sudo vim /etc/ppp/ip-up.local

!/bin/bash

/sbin/ifconfig $1 mtu 1496		

38.2.2. Client 客户端

安装pptp客户端

yum install -y pptp pptp-setup		

38.2.2.1. 创建账号

普通账号

pptpsetup --create vpn --server vpn.netkiller.cn \
--username neo --password netkiller			

加密账号

pptpsetup --create vpn0 --server vpn.netkiller.cn \
--username neo --password netkiller --encrypt			

查看vpn配置文件

# cat /etc/ppp/peers/vpn 
# written by pptpsetup
pty "pptp vpn.netkiller.cn --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name neo
remotename vpn
ipparam vpn			

38.2.2.2. 内核模块安装

for module in nf_nat_pptp nf_conntrack_pptp nf_conntrack_proto_gre
do
    modprobe $module
done			

38.2.2.3. 拨入VPN

链接vpn

pppd call vpn			

查看日志

# tail -f /var/log/messages | grep pppd
Sep  9 19:09:19 iZ621r6pk9aZ pppd[21801]: pppd 2.4.5 started by root, uid 0
Sep  9 19:09:19 iZ621r6pk9aZ pppd[21801]: Using interface ppp0			

38.2.2.4. 路由配置

38.2.2.4.1. 自动配置路由

创建文件/etc/ppp/ip-up.local,写入添加路由命令,然后赋予可执行权限。

[neo@netkiller ppp]# cat /etc/ppp/ip-up.local 
ip route add 192.168.0.0/24 dev ppp0  scope link

[neo@netkiller ppp]# chmod +x /etc/ppp/ip-up.local 

创建文件 /etc/ppp/ip-down.local 写入删除路由命令,然后赋予可执行权限

# cat /etc/ppp/ip-down.local
ip route del 192.168.0.0/24 dev ppp0

chmod +x /etc/ppp/ip-down.local				
38.2.2.4.2. 手工配置路由

添加路由

ip route add 192.168.0.0/24 dev ppp0  scope link			

查看路由表

[neo@netkiller ppp]# ip route 
default via 47.19.19.27 dev eth1 
1.2.2.2 dev ppp0  proto kernel  scope link  src 2.0.1.8 
10.0.0.0/8 via 10.47.47.247 dev eth0 
10.47.40.0/21 dev eth0  proto kernel  scope link  src 10.47.40.190 
47.89.36.0/22 dev eth1  proto kernel  scope link  src 47.89.36.254 
100.64.0.0/10 via 10.47.47.247 dev eth0 
118.142.17.226 via 47.89.39.247 dev eth1  src 47.89.36.254 
169.254.0.0/16 dev eth0  scope link  metric 1002 
169.254.0.0/16 dev eth1  scope link  metric 1003 
172.16.0.0/12 via 10.47.47.247 dev eth0  
192.168.0.0/24 dev ppp0  scope link			

删除路由

ip route del 192.168.0.0/24 dev ppp0				

FreeBSD 等老系统

route add -net 192.168.0.0/24 dev ppp0				

38.2.3. FAQ

38.2.3.1. 800 错误

错误:800

运行 ipconfig /flushdns 后,再试

38.2.3.2. 测试 PPTP 端口

telnet vpn.netkiller.cn 1723			

38.2.3.3. debug

			# pppd call vpn debug dump logfd 2 updetach
pppd options in effect:
debug		# (from command line)
updetach		# (from command line)
logfd 2		# (from command line)
dump		# (from command line)
noauth		# (from /etc/ppp/peers/vpn)
name cf4		# (from /etc/ppp/peers/vpn)
remotename vpn		# (from /etc/ppp/peers/vpn)
		# (from /etc/ppp/peers/vpn)
pty pptp vpn.netkiller.cn --nolaunchpppd		# (from /etc/ppp/peers/vpn)
ipparam vpn		# (from /etc/ppp/peers/vpn)
nobsdcomp		# (from /etc/ppp/peers/vpn)
nodeflate		# (from /etc/ppp/peers/vpn)
using channel 4
Using interface ppp0
Connect: ppp0 <--> /dev/pts/6
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xf6887c7c> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xf6887c7c> <pcomp> <accomp>]

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-09-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDN及云技术分享

Openssl状态机的实现

Openssl是通过“握手“建立加密信道,在该信道双方的身份都是合法的,并且传输数据都是密文传输。Openssl握手通过客户端和服务端互相交换信息计算出secr...

2833
来自专栏猿天地

Spring Cloud Gateway 限流操作

API网关作为所有请求的入口,请求量大,我们可以通过对并发访问的请求进行限速来保护系统的可用性。

1483
来自专栏linux驱动个人学习

dump_stack 分析使用

dump_stack是用来回溯内核运行的信息的,打印内核信息堆栈段; dump_stack原型: void dump_stack(void); 1、使用这个功能...

3085
来自专栏pangguoming

Configure Apache Virtual Hosts - CentOS 7

Difficulty: 2 Time: 15 minutes Want to host websites on your server? Using Apach...

3584
来自专栏wOw的Android小站

[Android][Framework] 无障碍快捷方式相关代码

问题:无障碍快捷方式(Accessibility Shortcut)打开不生效。

1631
来自专栏along的开发之旅

创建Ripple山寨币

replace “masterpassphrase” with what you like.

1011
来自专栏coding...

iOS开发 MVVM+RAC 的使用Demo效果ReactiveCocoa简介Demo分析代码Demo地址

好长一段时间没有敲简书了! 主要是因为一直在跑面试。 终于还是在上海入职了! 由于项目原因最终还是入了MVVM+RAC的坑

1224
来自专栏Hadoop实操

Hive创建外部表CSV数据中列含有逗号问题处理

在不能修改示例数据的结构情况下,这里需要使用Hive提供的Serde,在Hive1.1版本中提供了多种Serde,此处的数据通过属于CSV格式,所以这里使用默认...

3255
来自专栏乐沙弥的世界

中小型数据库 RMAN CATALOG 备份恢复方案(一)

        对于数据库的稳定性,高可用,跨平台以及海量数据库的处理,Oracle 数据库通常是大型数据库和大企业的首选。尽管如此,仍然不乏很多中小企业想要品...

671
来自专栏乐沙弥的世界

Oracle Net Services - Tracing and Logging at a Glance

    Oracle Net trace 用于跟踪或调试oracle连接故障,连接异常断开或者连接超时等情形,通过产生详细的跟踪信息来进行分析和诊断Oracle...

603

扫码关注云+社区