树莓派搭建L2TP/IPSec

使用原因:
在pi上搭了SS,但是IOS大陆下不了SS客户端,OpenVpn也是同样的问题。所以就想到了pptp,/ipsec;考虑到安全性,选择了/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 xd ppp
# 这3个软件分别实现ipsec,,管理功能。

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运行正常
树莓派搭建L2TP/IPSec_第1张图片

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

9. xd配置

vim /etc/xd/xd.conf

# 替换为以下内容

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

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

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

# 关闭chap
refuse chap = yes

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

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

length bit = yes

10.配置ppp/options.xd

vim /etc/ppp/options.xd

# 添加以下内容

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. 开启xd服务

service xd start
service xd status

注意看xd服务的状态,有没有什么异常,下面是正常的截图
树莓派搭建L2TP/IPSec_第2张图片

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

13. 路由器端口转发

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

树莓派搭建L2TP/IPSec_第3张图片

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

cd /home/pi
touch _autocon.sh
chmod 700 _autoconf.sh
chown pi _autoconf.sh
chgrp pi _autoconf.sh

vim _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/_autoconf.sh

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

你可能感兴趣的:(树莓派)