yum install ppp

rpm -ih pptpd-1.3.4-2.el6.x86_64.rpm #注意对应自己的版本 不然会出现莫名其妙的连接问题


关闭 selinux 切记不然也会出现莫名其妙的问题 619 等
vim /etc/sysconfig/selinux
SELINUX=disabled  #把selinux 关闭
如若不重启的话 还需要
setenforce 0  #设置为不启用


配置部分

iptables

vim /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 47 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8005 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8983 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

这是我全部的文件内容

其实最重要的  53 DNS查询端口 1723 和 47应该是认证端口 注意这几个端口如果不开放就会导致登录不上 或者登录上去上不了网


vim /etc/sysctl.conf

找到

net.ipv4.ip_forward = 0 改为 net.ipv4.ip_forward = 1

sysctl -p 命令使其生效

作用在于内核添加转发功能


写一个脚本 (因为没研究那个IPTABLES转发 在配置文件里面怎么写成 所以只有沿用别人的方法了

vim snat.sh

#/bin/bash
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -X
iptables -Z
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.0/24 -j SNAT --to 172.16.67.11
# 这里需要注意网卡的指定 出口是用哪张网卡要指定好

chmod +x snat.sh


设置 pptpd 分配给 客户端ip地址

vim /etc/pptpd.conf

localip 172.16.67.11
remoteip 192.168.10.200-254

ubuntu 要这样配置 否则windows会有问题
配置/etc/ppp/options.pptpd
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
idle 2592000
ms-dns 8.8.8.8
ms-dns 8.8.4.4
logfile /var/log/pptpd.log

localip 是你机子的IP地址

remoteip 是即将分配给登录用户的虚拟ip地址


设置 DNS 地址

vim /etc/ppp/options.pptpd

ms-dns 172.17.1.46 #这是我学校内网的DNS服务器 根据需要修改哈
ms-dns 8.8.4.4  #这是google的dns

设置 DNS 账号和密码

vim /etc/ppp/chap-secrets

*

# Secrets for authentication using CHAP
# client  server  secret      IP addresses
test pptpd test *
#账号 协议 密码 分配的IP地址*表示任意IP


接下来就是启动服务了

首先是启动iptables


service iptables start

点开那个脚本添加转发规则不然上不了网(等学了iptables我再改成配置文件版本的

./snat.sh

service pptpd start


这样就应该启动了

测试连接吧


参考自 http://budongzhenren.blog.51cto.com/2288320/886251

坑爹的没有好几个端口的配置 让我走了好多弯路 不过写的连接还比较详细 可以看那个最下面连接部分 


命令行工具使用vpn

sudo pptpsetup -create rongshangvpn02 --server x.x.x.x -username test -password test --encrypt --start


pptpsetup  --create <TUNNEL> --server <ip address/hostname> [--domain <DOMAIN NAME>] --u sername <USERNAME> [--password <PASSWORD>] [--encrypt] [--start]

* <TUNNEL>  创建的连接名称,自指定。
* <SERVER> PPTP SERVER的IP或域名。
* <DOMAIN>   所在的域,很多Windows的服务器都是使用“域”来管理认证的。
* <USERNAME> ××× 用户名(域用户名)
* <PASSWORD> ×××上用户密码,也可以没这个参数,命令稍后会自动询问,这样保证账号安全
* –encrypt 表示启用加密,不必指定加密方式,命令会读取配置文件中的加密方式
* 当没使用–encrypt 连接时出现下面的错误时,表示使用了加密,这点也可以和×××的管理员联系确认一下,遇到下面的情况可以加上该参数。
* CHAP authentication succeeded
* LCP terminated by peer (ZM-76-^@<M-Mt^@^@^BM-f ) 类似乱码
* –start  创建连接完后马上连接。


运行该命令后实际上创建了两个配置文件:
/etc/ppp/chap-secrets
/etc/ppp/peers/连接名

可以看看配置文件

配置文件 /etc/ppp/peers/连接名

# written by pptpsetup
pty "pptp x.x.x.x --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name xxxxx
remotename xxxxxxx
ipparam xxxxxxxxx
require-mppe-128

# 网上有人这么自定义 有一些说明我直接贴过来 后面研究
# written by pptpsetup 
pty "pptp 10.39.100.2 --nolaunchpppd" 
lock 
noauth 
nobsdcomp 
nodeflate 
name csnj\\administrator 
remotename csvpn 
ipparam csvpn 
#defaultroute  #使用本连接作为默认路由,本文单网卡没意义,可以不添加,说明见附录 
persist #当连接丢失时让pppd再次拨号,已验证 
require-mppe-128 
refuse-pap 
refuse-chap 
refuse-eap 
refuse-mschap


pptpsetup --delete 链接名称
删除一个节点

设置拨号脚本;
拨号脚本pon 和poff在下面的目录 /usr/share/doc/ppp-*/scripts/ 里:
cp /usr/share/doc/ppp-2.4.5/scripts/pon /usr/sbin
cp /usr/share/doc/ppp-2.4.5/scripts/poff /usr/sbin
chmod +x /usr/sbin/pon /usr/sbin/poff  #使pon和poff脚本拥有执行权限
这样就可以通过pon/poff <tunnel> 来启停×××连接。
也可以使用 pppd call <tunnel> / killall pppd来启动/停止。

最后可以改变路由表将流量全部引到×××链接上
ip route delete default
ip route add default dev ppp0