> Linux服务器 > VPN >

Openvpn 公网访问内网


对于需要从公网访问内网的情况, 需要做如下配置

从公网到内网

除了设置net.ipv4.ip_forward = 1 以外, 还需要设置iptables, 增加两行forward

 

复制代码
# Generated by iptables-save v1.4.7 on Wed Jan 13 01:56:27 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [23:2300]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -s 10.8.0.0/24 -d 192.168.1.0/24 -i tun0 -j ACCEPT # 接收公网10.8.0.x
-A FORWARD -s 192.168.1.0/24 -d 10.8.0.0/24 -i eth0 -j ACCEPT # 回传内网192.168.1.x
-A FORWARD -j REJECT --reject-with icmp-host-prohibited # 拒绝其他
COMMIT
# Completed on Wed Jan 13 01:56:27 2015
# Generated by iptables-save v1.4.7 on Wed Jan 13 01:56:27 2015
复制代码

 

 

从内网到公网

1. 可以把openvpn服务器也设成路由器,并使openvpn服务器作为这些需要被访问的内网机器的路由器,这样路由器和openvpn在同一台机器上就ok了。当然如果路由器和openvpn不在同一台机器上,这个方法比较麻烦,还需要做其他的设置。

2. 如果内网中有多台机器可能需要被访问,可以在无线路由器上设置静态路由表,设置10.8.0.x网段的信息路由到openvpn服务器, 具体设置参看自己的路由器的设置页面吧。如果是计算机作路由器,那就使用 route add -net 10.8.0.0/24 gw 192.168.1.221(openvpn服务器的ip),这样只需要改一个地方就ok了,就不需要修改每台内网的机器了。

3. 如果改不了路由器,或者内网需要修改的机器不多的话,也可以直接在内网要被访问的机器上,执行 route add -net 10.8.0.0/24 gw 192.168.1.221(openvpn服务器的ip)命令来直接给内网的机器添加路由,这样当碰到10.8.0.x网段的信息,它就知道直接路由到openvpn服务器,而不会走默认网关这条路了。

 

openvpn配置文件

port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh /etc/openvpn/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
;push "route 192.168.1.0 255.255.255.0" #将在客户端添加路由, 将192.168.1.x的访问指向openvpn服务器, 在下一条注释时, 可以起到只特定访问走openvpn, 不影响本地上网的效果
push "redirect-gateway def1 bypass-dhcp" # 如果希望客户端网络访问全走openvpn, 则取消注释
push "dhcp-option DNS 202.106.0.20"
push "dhcp-option DNS 219.141.136.10"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
log         /var/log/openvpn.log
verb 4

 

客户端配置文件

client
dev tun
proto udp
remote 106.2.168.158 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca      h-221-ca.crt
cert    h-221-milton.crt
key     h-221-milton.key
remote-cert-tls server
comp-lzo
verb 3

windows查看路由: route print

linux 查看路由: route

设置永久路由

1. 根据/etc/sysconfig/network-scripts/下的网卡, 新建形如route-eth0这样的文件, 内容如下
10.8.0.0/24 via 192.168.1.221

2. 添加 /etc/sysconfig/static-routes 文件, 内容如下
any net $DST_NET gw $GW_IP
any host $DST_HOST gw $GW_IP

 

参考:

http://blog.csdn.net/cnbird2008/article/details/6034273 


(责任编辑:IT)