分类
Linux 网络

Linux搭建VPN服务器

系统:MintLinux(基于Ubuntu)
类型:PPTP
搭建 VPN 服务器的方法非常多,比较著名的有 PPTP, L2TP/IPSec 和 OpenVPN。这三种方式中后两者的安全性比较好,但配置较麻烦。其中 OpenVPN 在 Windows/Mac 平台上还需要额外的客户端。

操作如下:
安装pptpd

apt install pptpd

编辑pptpd配置文件

打开 pptp.conf 配置文件

vi /etc/pptpd.conf

找到
#localip 192.168.0.234-238,192.168.0.245
#remoteip 192.168.1.234-238,192.168.1.245
去掉前面的注释#号,修改为

localip 192.168.1.234
remoteip 192.168.1.100-192.168.1.200
localip是linux主机的ip地址
remoteip是地址池,也就是远程拨进来的计算机所分配到的ip地址。

配置DNS

打开 pptpd-options 配置文件

vi /etc/ppp/pptpd-options

找到
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2
去掉前面的注释#号,修改为客户端连接后分配的DNS,如:
ms-dns 114.114.114.114
ms-dns 114.114.115.115

配置用户

打开 chap-secrets

vi /etc/ppp/chap-secrets

如图:
2016-04-15 17:09:56的屏幕截图
用户名(tab)主机名(tab)密码(tab)分配到的ip地址
按上面的格式来填写,其中主机名可以用“*”代替,如果不强制指定该用户分配到哪一个ip地址,可以将最后一项也改为“*”
添加后保存,重启服务
service pptpd restart
如果开启了iptables,则需要加入以下规则:

iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT  -p gre -j ACCEPT

连接外网

使用另一台windows建立vpn连接成功,但是不能上网。这种情况需要打开内核的转发功能和配置防火墙。
打开/etc/sysctl.conf

vi /etc/sysctl.conf

去掉“net.ipv4.ip_forward=1”前的注释号,保存后输入以下命令应用配置。

sysctl -p

配置iptables防火墙

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 192.168.1.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1200

重启服务
service pptpd restart
再重新连接VPN,可以上网了。

发表评论

电子邮件地址不会被公开。