使用原因:
在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运行正常
有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
/var/log/syslog 中也可以看到ipsec与xd的错误输出
到这里,xd,ppp的配置就完成了
13. 路由器端口转发
ipsec,用到了udp:500,4500,1701端口,而且pi是通过路由连网的,所以要在路由上设置转发。
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/