树莓派搭建L2TP/IPSec

使用原因:
在pi上搭了SS,但是IOS大陆下不了SS客户端,OpenVpn也是同样的问题。所以就想到了pptp,l2tp/ipsec;考虑到安全性,选择了l2tp/ipsec方式。

1. 环境
树莓派3(kernel 4.1.19-v7+)
使用WiFi接入家中路由器
Router IP: 192.168.1.1
Pi wlan0: 192.168.1.101

2. 安装相关软件

apt-get install openswan xl2tpd ppp
# 这3个软件分别实现ipsec,l2tp,管理功能。

3. 配置ipsec.conf

vim /etc/ipsec.conf

#在文件结尾加上以下配置
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.101
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any

4.配置ipsec.secrets

# 这里用来配置ipsec的预共享密钥
vim /etc/ipsec.secrets

#添加以下内容
#192.168.1.101替换成你自己pi的内网ip
#我配置的预共享密钥为 "fuckfuck"
192.168.1.101     %any: PSK       "fuckfuck"

5. 关闭内核ICMP重定向

# shell中运行以下命令
for each in /proc/sys/net/ipv4/conf/*
do
      echo 0 > $each/accept_redirects
      echo 0 > $each/send_redirects
done

6. 配置sysctl.conf

vim /etc/sysctl.conf

# 在结尾添加以下内容,ipv4转发,关闭icmp重定向等等
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 -p

7. iptable配置

# 注意这里的网络接口配置 wlan0
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -I INPUT -p udp -m multiport --dport 1701,4500,500 -j ACCEPT

8. 测试ipsec

service ipsec start
update-rc.d ipsec defaults # 开机启动ipsec
ipsec verify

查看ipsec verify的输入,解决failed的项;下图没有failed项目表示ipsec运行正常
hehe

有failed的项,google一下就可以解决了。到这里ipsec就配置完了

9. xl2tpd配置

vim /etc/xl2tpd/xl2tpd.conf

# 替换为以下内容

[global]
# pi的内网地址
listen-addr = 192.168.1.101
ipsec saref = yes

[lns default]
# vpn网络客户端ip范围,不能跟家里的局域网ip范围冲突
ip range = 10.1.1.2-10.1.1.200

# vpn网络中,分配给服务器pi的ip
local ip = 10.1.1.1

# 关闭chap
refuse chap = yes

refuse pap = yes
require authentication = yes
name = l2tp
ppp debug = yes

# 调用的ppp配置文件路径,待会要配置
pppoptfile = /etc/ppp/options.xl2tpd

length bit = yes

10.配置ppp/options.xl2tpd

vim /etc/ppp/options.xl2tpd

# 添加以下内容

ipcp-accept-local
ipcp-accept-remote
# dns地址,第一个配了路由的ip
ms-dns 192.168.1.1
ms-dns 8.8.8.8
ms-dns 8.8.4.4
noccp
auth
crtscts
debug
hide-password
modem
lock
proxyarp

11. 配置ppp帐号

vim /etc/ppp/chap-secrets
# 添加以下内容
# 格式:帐号名 * 密码 *
user1 * pwd123 *

12. 开启xl2tpd服务

service xl2tpd start
service xl2tpd status

注意看xl2tpd服务的状态,有没有什么异常,下面是正常的截图
这里写图片描述

/var/log/syslog 中也可以看到ipsec与xl2tpd的错误输出
到这里,xl2tpd,ppp的配置就完成了

13. 路由器端口转发

ipsec,l2tp用到了udp:500,4500,1701端口,而且pi是通过路由连网的,所以要在路由上设置转发。

这里写图片描述

14. 开机自动设置
icmp重定向与iptable的配置需要每次开机都设置,这里写脚本实现

cd /home/pi
touch l2tp_autocon.sh
chmod 700 l2tp_autoconf.sh
chown pi l2tp_autoconf.sh
chgrp pi l2tp_autoconf.sh

vim l2tp_autoconf.sh
# 输入以下内容
#!/bin/bash

for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done

iptables -I INPUT -p udp -m multiport --dport 1701,4500,500 -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# 添加到开机自动执行
vim /etc/rc.local

# 在exit 0之前添加代码
bash /home/pi/l2tp_autoconf.sh

参考了另一个blog:
http://lizhug.com/tech/centos6-5%E6%90%AD%E5%BB%BAl2tp-ipsec-vpn-vpn%E7%B3%BB%E5%88%97%EF%BC%88%E4%B8%80%EF%BC%89/

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值