1 判断PPP是否可用
首先,我们需要检查服务器是否支持搭建PPTP,在shell中输入:
cat /dev/ppp
cat: /dev/ppp: No such device or address
如果出现以上提示[No such device or address],说明这台服务器PPP可用;若出现”Permission denied”提示,则无法使用PPP,考虑更换一台服务器。
2 安装IPtables
通常Linux系统上都自带安装好了iptables,你可以用rpm -qa | grep iptables来查看安装了没有
如果没有可以使用yum进行安装:
yum install iptables
cp -rpf /etc/sysconfig/iptables /etc/sysconfig/iptables.pptpsave
cd /usr/src
3 安装PPTP套件
安装 pptpd
yum install pptpd
开启路由转发
vi /etc/sysctl.conf
修改:
net.ipv4.ip_forward = 1
执行:
/sbin/sysctl -p
复制以下所有命令,粘贴在shell中:
sysctl -p
echo “localip 192.168.240.1” >> /etc/pptpd.conf
echo “remoteip 192.168.240.101-200” >> /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
iptables -\-flush POSTROUTING -\-table nat
iptables -\-flush FORWARD
iptables -A INPUT -p tcp -m tcp -\-dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.240.0/24 -o eth0 -j MASQUERADE
service iptables save
service pptpd restart
service iptables restart
chkconfig pptpd on
chkconfig iptables on
上面的命令请把”\”去掉
如果service iptables save出错please try to use systemctl. 请看文章后面解决方法
以上主要设置了VPN所使用的IP地址段、包转发规则等。VPN客户端将分配到的地址为:192.168.240.* 地址段,通过VPN服务器的eth0以太网接口转发对外的数据包(可以使用ifconfig查看本机对外通信的接口是否为eth0,若不是可自行更改)。
4 设置VPN账号和密码
你任意添加VPN账户,使用Vim编辑文件 /etc/ppp/chap-secrets 一行一个账户,
vi /etc/ppp/chap-secrets
如:
wwt pptpd 123456 *
分别表示账户名、VPN服务、密码、IP。
例如,我要新增一個帳號為「vpn」,密碼為「test123」,則只要在 /etc/ppp/chap-secrets 加入一行:
vpn pptpd test123 *
现在,就可以在PC或者iPhone上连接VPN上网了。
解决service iptables save出错please try to use systemctl.
出错信息如上所示
本人原来使用的是CentOS6.X版本的Linux,后来为了学习更多内容选择更换CentOS7.X,然后在配置防火墙的时候出现了上面所示的错误,原因:CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。service命令只保留下了极少部分使用,大部分命令都要改用systemctl使用。
在RHEL 7 / CentOS 7中,firewalld被引入来管理iptables。个人觉得, firewalld更适合于工作站而不是服务器环境。
可以回到更经典的iptables设置来解决上面的问题
下面就谈谈上面错误的解决方案。
首先停止防火墙
systemctl stop firewalld
systemctl mask firewalld
然后安装iptables-services
yum install iptables-services
设置开机启动防火墙
systemctl enable iptables
可以使用下面命令管理iptables
systemctl [stop|start|restart] iptables
这时可以保存防火墙规则了
service iptables save
问题就解决了,至于需不需要sudo权限,根据具体环境而定