当前位置: 代码迷 >> Iphone >> iphone4 透过openvpn client 链接服务器访问内网应用
  详细解决方案

iphone4 透过openvpn client 链接服务器访问内网应用

热度:116   发布时间:2016-04-25 06:33:05.0
iphone4 通过openvpn client 链接服务器访问内网应用

一、服务器环境及目的

服务器两块网卡,一块连接外网,一块连接内网
外网IP: 192.169.63.110
办公内网IP:192.168.1.0/24

?

?

目的:
通过VPN在Internet环境下接入办公内网,可以访问内网指定段内的计算机,并且客户端能通过VPN通道访问Internet

二、服务端安装过程

1.安装openvpn

apt-get install openvpn

?

?????

2.设置认证机构,产生证书
在Debian Linux中大致这样操作,将目录 /usr/share/doc/openvpn/examples/easy-rsa/2.0 复制的你的HOME目录(这个目录包含了一系列很方便的脚本),修改vars使其符合你的实际情况(国家、省份、城市、公司、机构、邮件地址),然后运行代码:

source ./vars ./clean-all ./build-ca ./build-key-server <servername> ./build-key <clientname> ./build-dh

?

?

?

3.注意:
这只是第一次产生证书的正确操作,其中 build-ca 创建根证书,若你没有清除全部VPN Server/Client的打算,你不应该再次运行此命令;创建的全部证书及私钥都在当前目录的 keys 下面,而命令 clean-all 将清除 keys 下面全部内容,因此 cliean-all 只在 build-ca 前运行一次。随后添加 Server 证书或 Client 证书只需运行(建议单独的客户端配置单独的证书)代码:

./vars ./build-key-server <servername> or ./build-key <clientname>

?

?

?

4.配置Server端
从示例中解压 server.conf 代码:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz

将相关证书、私匙拷贝的 /etc/openvpn

ca.crt server.crt server.key dh1024.pem

?

?

?

?

5.修改 server.conf
关键一:取消注释 push "route a.b.c.d 255.255.255.0",并将地址和掩码替换为办公网络的地址和掩码
目的是为客户端加一条路由,这样客户端才有可能访问到办公网络中出VPN Server之外的其它主机
关键二:取消注释 push "dhcp-option DNS a.b.c.d" 和 push "dhcp-option WINS a.b.c.d", 并将地址替换为实际的 DNS 和 WINS 服务器的地址
目的是客户端连接VPN后仍能访问 Internet,(若推过来的DNS不能解析外部域名,则即使客户端的路由配置正确,想通过域名访问Internet也不可能)

示例server.conf

port 443 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem server 10.10.10.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" #增加192.168.1.0 IP断的路由 使VPN客户端能访问这个地址段(真正能访问还需要后面的设置) push "route 192.168.1.0 255.255.255.0" push "dhcp-option DNS 202.96.209.133" #vpn客户端能否相互访问 ;client-to-client #注释掉此参数表示同一个客户端证书只能有一个连接,如果两个客户端使用同一个证书连接的话, #先连接的会自动断开 ;duplicate-cn keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log log /var/log/openvpn.log verb 3

6.Server 端其它设置
配置服务器,允许包转发:代码:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

设置iptable转发规则 使访问目标为172.16.1.0段的请求都转发到eth0网卡,这是vpn服务器连接办公内网的网卡,这里很重要,不然的话VPN客户端还是不能访问办公内网

iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -o eth0 -j MASQUERADE

设置iptable转发规则 使来源为vpn客户端的请求都转发到eth1网卡,这是vpn服务器连接Internet的网卡,这里很重要,不然的话VPN客户端还是不能通过VPN访问Internet

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth1 -j MASQUERADE

通过修改/etc/rc.local,加入以下代码,使服务器重启后自动设置转发规则

echo 1 |tee /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth1 -j MASQUERADE exit 0

三、客户端配置过程

至此openvpn服务器端配置完毕, 客户端只需要将keys目录下生成的对应的ca.crt(公用) 专用client.crt和client.key, client.ovpn拷贝到客户端openvpn安装目录下的config目录,如果没有client.ovpn文件,直接新建一个,内容类似:

client dev tun proto udp remote <serverip> 443 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key comp-lzo verb 3

运行客户端连接试一下吧

?

?

?

IPHONE端:

? 首先安装ssh ,然后在pc上通过无线网络连接IPHONE, 按照以上客户端配置的步骤跟iphone一样,

?

最终iphone端启动openvpn 客户端连接的命令如下:

/usr/bin/openvpn --script-security --config /var/mobile/Library/OpenVpn/conf.ovpn

?

?

?

  相关解决方案