序言
本文操作经过实验认证,目前我正在使用的VPN的方案
任何服务器都绝对不能直接暴露在外网上,会被别人攻击,在公司的话整个网络就直接瘫痪了
最后会进行端口映射及防火墙的相关操作
环境说明
CentOS 7
安装包下载
yum install -y epel-release # 安装EPEL源
yum install -y openswan ppp xl2tpd
服务器搭建
- vim /etc/ipsec.conf
把下面192.168.1.100换成你自己VPS本机电脑IP地址,如果本机直接连接外网,请填写实际的外网固定IP。其他的不动
config setup #替换此项目下的所有内容
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=192.168.1.100 # ($esojourng.org)可用花生壳动态解析
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
sha2-truncbug=yes
- vim /etc/ipsec.secrets
192.168.1.100换成你自己VPS本机电脑IP地址,如果本机直接连接外网,请填写实际的公网IP, YourPsk你自己定一个密钥,到时候连***的时候在安全设置里要用
192.168.1.100 %any: PSK "YourPsk"
- vim /etc/sysctl.conf
确保下面的字段都有,对应的值或下面一样。省事的话直接在/etc/sysctl.conf的末尾直接把下面内容的粘过去。
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
让修改后的sysctl.conf生效:
sysctl -p
有可以报一些关于ipv6的error,不要管它,继续下一步
- 验证ipsec的运行状态
systemctl start ipsec.service
ipsec verify
systemctl enable ipsec.service # 开机启动
如何只有红框内这种报错,可以忽略!
如果有failed,就无法进行下去,那需要自己去百度、google找答案吧,我搭建的时候是没有遇到,记得把selinux关掉。
5. vim /etc/xl2tpd/xl2tpd.conf
内容如下:
[global]
ipsec saref = yes
listen-addr = 192.168.1.100 ;服务器地址
[lns default]
ip range = 192.168.1.2-192.168.1.99 ;这里是*** client的内网ip地址范围
local ip = 192.168.1.100 ;这里是*** server的内网地址
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = y
- vim /etc/ppp/options.xl2tpd
内容如下:
require-mschap-v2
ms-dns 192.168.1.245 # 自己的DNS服务器地址
ms-dns 192.168.1.246 # 自己的DNS服务器地址
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
- /etc/ppp/chap-secrets
此配置文件是设置***的用户名,密码:
vim /etc/ppp/chap-secrets
格式如下:
此设置表示,账户为admin,密码为123,可以在任何可以上网的客机上登陆此服务器 。
- 启动 xl2tpd 服务
systemctl start xl2tpd.service
systemctl enable xl2tpd.service # 开机启动
- 开放端口及转发
本文使用的是iptables防火墙,如果机器上使用的是firewalld防火墙,你可以百度去查如何设置,也可以直接卸载
安装防火墙
yum -y remove firewalld.services
yum -y install iptables-services
systemctl start iptables.service # 启动防火墙
systemctl enable iptables.service # 开机启动防火墙
配置防火墙
iptables -t nat -A POSTROUTING -m policy --dir out --pol none -j MASQUERADE
iptables -A FORWARD -i ppp+ -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
# 192.168.1.0/24为xl2tpd.conf里写的client的IP段
# eth1为192.168.1.100的网卡名,ifconfig可查看
重启电脑即服务器就配置完成了,客户端电脑请看我的WINDOWS客户端配置
外网端口映射
外网路由器请自己映射好500、4500、1701,这样才可以正常使用
思科交换机映射举例
ip nat inside source static udp 192.168.1.100 500 10.10.10.10 500 extendable
ip nat inside source static udp 192.168.1.100 4500 10.10.10.10 4500 extendable
ip nat inside source static udp 192.168.1.100 1701 10.10.10.10 1701 extendable
本人的经验分享,希望可以帮助到你们,如何不对的地方,可以评论留言,帮我指正一下,如果帮助了你,请给我点个赞吧