不同子网之间的OpenVPN路由

不同子网之间的OpenVPN路由

我遇到了一个复杂设置的问题,我无法理解它。

请查看图纸,它显示了所有涉及的组件。基本上,我试图通过两个路由器进行 NAT,一个方向有效,另一个方向无效。

路由器 1 是具有两个接口(lan 和 vpn)的 OpenWRT,路由器 2 是 Ubuntu 盒。建筑学

路由器 1 是 OpenVPN 客户端,连接到路由器 2(OpenVPN 服务器)。OpenVPN 子网为 192.168.200.0/24,左侧的内部 LAN 为 192.168.170.0/24,另一侧的内部 LAN 为 10.0.0.10/24。路由器 2 也是双宿主的,第二个接口公开 OpenVPN 服务器(10.10.0.1)。

OpenWRT 在两个区域内转发,并在两个方向上进行伪装。

config defaults
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'

config zone
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        option masq '1'
        option mtu_fix '1'
        option network 'lan'

config include
        option path '/etc/firewall.user'

config rule
        option target 'ACCEPT'
        option name 'Any - Any - All'
        option src '*'
        option dest '*'
        option proto 'all'

config zone
        option name 'vpn'
        option output 'ACCEPT'
        option input 'ACCEPT'
        option forward 'ACCEPT'
        option masq '1'
        option mtu_fix '1'
        option network 'OpenVPN'

config forwarding
        option dest 'lan'
        option src 'vpn'

config forwarding
        option dest 'vpn'
        option src 'lan'

路由器2的iptables配置如下:

iptables -F
iptables -X
iptables -t nat -F
iptables -A FORWARD -i eth1 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i eth1 -o tun0 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

它还可以路由:

net.ipv4.ip_forward=1

我正在将路由推送到 Router2 上的网络 192.168.170./24。

route add -net 192.168.170./24 dev tun0

结果:

左边的服务器 192.168.170.10 可以 ping 通右边的服务器 10.0.0.10,这样我就可以从左到右完全连接了。

路由器 2 (192.168.200.1) 可以 ping 通路由器 1 的 VPN IP 192.168.200.7,反之亦然。右侧服务器 10.0.0.10 无法 ping 通左侧服务器 192.168.170.10,我无法从右侧连接到左侧 - 但我可以 ping 通路由器 1 的 VPN IP 192.168.200.7。

这就是我的问题。我需要双向透明伪装。但我不确定我的问题出在哪里 :(

谢谢!

答案1

成功了:)

看来你不仅需要路由,还需要 OpenVPN 服务器上的客户端指令,将内部路由推送到 OpenVPN(iroute)

用客户端证书中的通用名称替换,并在 OpenVPN 服务器的 server.conf 中启用客户端指令。

/etc/openvpn/ccd/

内容

ifconfig 192.168.200.7 255.255.255.0 #always configure client with static address
iroute 192.168.170.0 255.255.255.0 #behind this client is the subnet

http://backreference.org/2009/11/15/openvpn-and-iroute/:)

答案2

如果你想要伪装,那么你必须为其指定一个网关!将行替换route add -net 192.168.170./24 dev tun0为:

route add -net 192.168.170.0/24 gw 192.168.200.1

反之亦然……

相关内容