我的服务器LAN IP为192.168.1.1,192.168.1.2上有一个内网networking服务器。OpenVPN守护进程configuration为给客户端192.168.2。*地址。
在configuration中有一个push "route 192.168.1.0 255.255.255.0"
线路,我希望VPN客户端可以访问整个192.168.1.0networking,但只能访问192.168.1.1 – VPN服务器本身。
我已经尝试在/etc/sysctl.conf
启用net.ipv4.ip_forward = 1
,但这没有帮助。
有任何想法吗?
PS:服务器运行Ubuntu 12.04。
PPS:OpenVPN通过UDP以tun
模式运行。
确保IP转发已启用
echo 1 > /proc/sys/net/ipv4/ip_forward
而且,为了使路由推送起作用,内部的服务器也需要知道到你的OpenVPN客户端IP地址的路由。 所以他们需要知道到192.168.2.0/24的路由
你很可能使iptables通过使用伪装进行路由
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE /sbin/iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
如果您的LANnetworking确实是192.168.1.0/24,那么您可能会遇到很多问题。 因为大多数路由器都有默认的networking。 所以,当你在访客networking上,你的电脑可以从192.168.1.0/24networking获得一个IP。 所以,您不能访问您的远程networking,但访客networking。 我build议为您的局域网和VPNselect另一个networking。 例如LAN为192.170.15.0/24,VPN为10.0.5.0/xx。 XX取决于有多lessVPN客户端连接到局域网。
这里是我的OpenVPN的fw脚本
#!/bin/sh iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A INPUT -i tap+ -j ACCEPT iptables -A FORWARD -i tap+ -j ACCEPT # Allow packets from private subnets iptables -A INPUT -i eth1 -j ACCEPT iptables -A FORWARD -i eth1 -j ACCEPT # i have multiple vpn networks # 192.123.123.0/24 = LAN iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.9.0.0/30 -o eth1 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.9.1.0/30 -o eth1 -d 192.123.123.39 -j MASQUERADE # to single server access only echo 1 > /proc/sys/net/ipv4/ip_forward