kiever 发表于 2012-7-25 17:41:21

Raspberry Pi安装成VPN服务器

Raspberry Pi安装成VPN服务器
今天正好有时间,就把自己的Raspberry Pi配置了一下,变成VPN服务器,这样在外面就可以随时连接到家里的网络。
网络结构大致是这样的:
家里是192.168.1.0/24网段,使用Raspberry Pi,Pi的IP 192.168.1.110,网关192.168.1.1

公司是10.0.0.0/8网段,WinXP系统
VPN使用172.16.210.0/24网段



服务器端安装步骤如下:
首先安装软件包sudo apt-get install openvpn配置openvpn          Openvpn的配置文件可以直接使用软件包里自带的,基本上不需要修改
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
sudo gunzip /etc/openvpn/server.conf.gz
         生成的/etc/openvpn/server.conf就是最终的配置文件。
   我的配置如下:
port 8000    # openvpn监听端口,默认1194,我修改成8000
proto tcp    # 默认udp,我这里使用TCP
dev tun
ca ca.crt
cert avstel.crt
key avstel.key# This file should be kept secret
dh dh1024.pem
server 172.16.210.0 255.255.255.0   # 这是我使用的VPN网段
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"# 添加192.168.1.0网段路由
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log/var/log/openvpn.log
verb 3


       下面就要按配置文件生成服务器和客户端使用的证书
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/
      

      为方便操作,这里我直接切换到root,然后将vars按自己需要修改以下内容
export KEY_COUNTRY="CN"
export KEY_PROVINCE="SH"
export KEY_CITY="Shanghai"
export KEY_ORG="HOME"
export KEY_EMAIL="me@localhost"
export KEY_EMAIL=mail@localhost
export KEY_CN=example.org
export KEY_NAME=HOME Use
export KEY_OU=example.org
export PKCS11_MODULE_PATH=None
export PKCS11_PIN=1234
       执行source导入以上变量:
source ./vars      

      按步骤生成key,所有内容都直接按回车接受默认值就可以了, build-dh这一步比较慢,需要耐心等待:

./cleanup-all
./build-ca
./build-dh   
./build-key-server server
./build-key client
       以上步骤没有问题的话,keys目录下面就生成了所有我们需要的key文件,将它们安装到/etc/openvpn
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys
cp ca.crt server.crt server.key dh1024.pem /etc/openvpn
      然后将ca.crt, client.crt和client.key 3个文件下载下来,这个需要安装到OpenVPN 的client端去。
   现在就可以把openvpn的服务启动起来
/etc/init.d/openvpn start


   客户端安装步骤
      下载地址:http://openvpn.se/download.html
      客户端的配置需要自己生成,我使用的配置文件vpn.ovpn内容如下:
client
dev tun
proto tcp
remote example.org 8000    # 请将example.org修改成你自己的服务器外网IP
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\client.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\client.key"
remote-cert-tls server
comp-lzo
verb 3
   

      将上面我们生成的ca和client证书按上面的路径放好,右键点击配置文件vpn.ovpn,选中“Start Openvpn on this config file”。
正常配置的情况下,就可以连接上我们的Raspberry Pi服务器了。


   最后一步,为了让client端能直接访问家里的NAS服务器,需要在Raspberry Pi上做以下设置
   修改/etc/sysctl.conf,将下面这一行前面的"#"去掉
net.ipv4.ip_forward=1    为让它立即生效,执行sysctl -p
    另外需要添加以下防火墙策略:
iptables -t nat -A POSTROUTING -s 172.16.210.0/24 -j SNAT --to 192.168.1.110

   为了让它重启后也能加载此设置,可以先将防火墙策略保存到/etc/network/iptables
iptables-save > /etc/network/iptables
    最后修改/etc/network/interface,把以下内容添加到eth0网卡配置的最后面

up iptables-restore < /etc/network/iptables


ukonline2000 发表于 2012-7-25 18:02:48

顶一个

树老大 发表于 2012-7-25 18:04:18

上帝也阻挡不了我对LZ的膜拜

kiever 发表于 2012-7-25 18:09:33

上面文档中少写了一步编辑不了原文了 只能这些提一下

需要首先将Raspberry Pi的IP设置成DMZ主机

藤条 发表于 2012-7-26 09:25:47

好玩,有空我也试试

bzdk 发表于 2012-7-26 11:24:29

回 kiever 的帖子

kiever:上面文档中少写了一步  编辑不了原文了 只能这些提一下

需要首先将Raspberry Pi的IP设置成DMZ主机 (2012-07-25 18:09) images/back.gif

端口映射也可以穿透路由

kiever 发表于 2012-7-26 11:37:34

嗯是这样的

wolong12 发表于 2013-3-1 11:13:48

设置成DMZ主机然后用SSH tunnel不就什么都可以了吗...何必这么麻烦- -!

飞翔世界的梦想 发表于 2013-3-2 02:48:32

感谢大神的付出啊。

bvjeff 发表于 2013-3-19 23:42:47


好玩,有空我也试试
页: [1] 2
查看完整版本: Raspberry Pi安装成VPN服务器