树莓派论坛

 找回密码
 立即注册

Raspberry Pi安装成VPN服务器

kiever 发表于 2012-7-25 17:41:21 | 显示全部楼层 |阅读模式
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网段
openvpn.PNG



服务器端安装步骤如下:
    [li] 首先安装软件包sudo apt-get install openvpn[/li][li]配置openvpn[/li]
          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


  

评分

参与人数 1 +13 收起 理由
树老大 + 13 上帝也阻挡不了我对LZ的膜拜

查看全部评分

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) 
端口映射也可以穿透路由
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 | 显示全部楼层

好玩,有空我也试试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )