Centos 7 安装 l2tp/ipsec
1.安装 l2tp ipsec 所需要的软件包
yum install epel-release
yum install openswan xl2tpd ppp lsof
2.设置ipsec
a.编辑 /etc/ipsec.conf(把下面xx.xxx.xxx.xxx换成你自己主机实际的外网固定IP。其他的不动。)
config setup protostack=netkey dumpdir=/var/run/pluto/ nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:100.64.0.0/10,%v6:fd00::/8,%v6:fe80::/10 conn L2TP-PSK-NAT rightsubnet=vhost:%priv also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 dpddelay=30 dpdtimeout=120 dpdaction=clear rekey=no ikelifetime=8h keylife=1h type=transport left=xxx.xxx.xxx.xxx leftprotoport=17/1701 right=%any rightprotoport=17/%any
b.编辑/etc/ipsec.secrets
include /etc/ipsec.d/*.secrets xx.xxx.xxx.xxx %any: PSK "ZXkj8888"
xx.xxx.xxx.xxx换成你自己VPS实际的外网固定IP, YourPsk你自己定一个,到时候连VPN的时候用,就是预共享密钥,比如可以填csdn.net, 注意空格。
c.修改/添加 /etc/sysctl.conf(sysctl -p)
net.ipv4.ip_forward = 1 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0
d.验证ipsec运行状态
ipsec setup start
ipsec verify
[root@localhost ~]# ipsec setup start Redirecting to: systemctl start ipsec.service [root@localhost ~]# ipsec verify Verifying installed system and configuration files Version check and ipsec on-path [OK] Libreswan 3.15 (netkey) on 3.10.0-514.el7.x86_64 Checking for IPsec support in kernel [OK] NETKEY: Testing XFRM related proc values ICMP default/send_redirects [OK] ICMP default/accept_redirects [OK] XFRM larval drop [OK] Pluto ipsec.conf syntax [OK] Hardware random device [N/A] Two or more interfaces found, checking IP forwarding [OK] Checking rp_filter [ENABLED] /proc/sys/net/ipv4/conf/all/rp_filter [ENABLED] /proc/sys/net/ipv4/conf/ens160/rp_filter [ENABLED] /proc/sys/net/ipv4/conf/ip_vti0/rp_filter [ENABLED] rp_filter is not fully aware of IPsec and should be disabled Checking that pluto is running [OK] Pluto listening for IKE on udp 500 [OK] Pluto listening for IKE/NAT-T on udp 4500 [OK] Pluto ipsec.secret syntax [OK] Checking 'ip' command [OK] Checking 'iptables' command [OK] Checking 'prelink' command does not interfere with FIPSChecking for obsolete ipsec.conf options [OK] Opportunistic Encryption [DISABLED] ipsec verify: encountered 7 errors - see 'man ipsec_verify' for help
3.设置 l2tp
a.编辑 /etc/xl2tpd/xl2tpd.conf
[global] ipsec saref = yes listen-addr = xxx.xxx.xxx.xxx #这里是你的主机外网ip地址
[lns default] ip range = 10.60.10.235-10.60.10.240 local ip = 10.60.10.1 require chap = yes refuse pap = yes require authentication = yes name = LinuxVPNserver ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes
b.编辑 /etc/ppp/options.xl2tpd
name l2tpd require-mschap-v2 ms-dns 8.8.8.8 ms-dns 8.8.4.4 ipcp-accept-local ipcp-accept-remote #ms-dns 8.8.8.8 noccp auth crtscts idle 1800 mtu 1410 mru 1410 nodefaultroute debug lock proxyarp connect-delay 5000
c.配置用户名,密码:编辑 /etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses # "linwj" * "123456" *
systemctl start xl2tpd.service //开启L2TP服务,可观察日志:/var/log/messages
4.Windows下设置VPN连接客户端
5.防火墙设置
/sbin/iptables -F INPUT /sbin/iptables -Z INPUT /sbin/iptables -P INPUT ACCEPT /sbin/iptables -A INPUT -m state --state INVALID -j DROP /sbin/iptables -A INPUT -p icmp -j ACCEPT /sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 22 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 1723 -j ACCEPT /sbin/iptables -A INPUT -p gre -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT /sbin/iptables -A INPUT -p udp -m udp --dport 1701 -j ACCEPT /sbin/iptables -A INPUT -p udp -m udp --dport 500 -j ACCEPT /sbin/iptables -A INPUT -p udp -m udp --dport 4500 -j ACCEPT /sbin/iptables -A INPUT -p esp -j ACCEPT /sbin/iptables -A INPUT -m policy --dir in --pol ipsec -j ACCEPT /sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited /sbin/iptables -F FORWARD /sbin/iptables -Z FORWARD /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -A FORWARD -m state --state INVALID -j DROP #/sbin/iptables -A FORWARD -m policy --dir in --pol ipsec -j ACCEPT /sbin/iptables -A FORWARD -d 10.60.10.0/24 -j ACCEPT /sbin/iptables -A FORWARD -s 10.60.10.0/24 -j ACCEPT /sbin/iptables -A FORWARD -i ppp+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited /sbin/iptables -F OUTPUT /sbin/iptables -Z OUTPUT /sbin/iptables -P OUTPUT ACCEPT /sbin/iptables -A OUTPUT -m state --state INVALID -j DROP /sbin/iptables -F -t nat /sbin/iptables -Z -t nat /sbin/iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o ens160 -j MASQUERADE
上网设置:
iptables -t nat -A POSTROUTING -s 192.168.34.0/24 -j SNAT --to-source xxx.xxx.xxx.xxx
其中10.60.10.0/24为xl2tp设置的Ip范围,—to-source为外网ip
保存配置:
iptables-save