Openvpn 公网访问内网
时间:2016-05-19 19:15 来源:linux.it.net.cn 作者:IT
对于需要从公网访问内网的情况, 需要做如下配置
从公网到内网
除了设置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)
对于需要从公网访问内网的情况, 需要做如下配置 从公网到内网 除了设置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这样的文件, 内容如下
参考: http://blog.csdn.net/cnbird2008/article/details/6034273 (责任编辑:IT) |