我使用Open远程连接到不同城市不同网络上的内部网(但可能有相同的子网)。内部网位于办公室远程服务器上的192.168.1.42上。
我们在一个办公室里,ip地址192.168.1.42是本地IP地址和远程ip地址--但我希望强制打开VPN使用该IP地址的远程版本,但仍然使用本地连接(即不通过VPN推动一切)。有可能吗?
发布于 2022-05-11 06:29:33
OpenVPN包括了针对这个非常流行的问题的对策。它基本上是一个静态一对一的NAT。它是在--client-nat选项的帮助下启用的:
--client-nat args
This pushable client option sets up a stateless one-to-one NAT
rule on packet addresses (not ports), and is useful in cases
where routes or ifconfig settings pushed to the client would
create an IP numbering conflict.
Examples:
client-nat snat 192.168.0.0/255.255.0.0
client-nat dnat 10.64.0.0/255.255.0.0
network/netmask (for example 192.168.0.0/255.255.0.0) defines
the local view of a resource from the client perspective, while
alias/netmask (for example 10.64.0.0/255.255.0.0) defines the
remote view from the server perspective.
Use snat (source NAT) for resources owned by the client and
dnat (destination NAT) for remote resources.
Set --verb 6 for debugging info showing the transformation of
src/dest addresses in packets.将以下内容添加到受影响的客户端OpenVPN配置文件中:
client-nat dnat 10.64.0.0/255.255.0.0
client-nat snat 10.64.0.0/255.255.0.0并尝试连接到例如10.64.1.42,而不是192.168.1.42。
注意,虽然这可能会有所帮助,但您肯定需要进行一些调试(在配置文件或管理通道中使用verb 6 )。还请记住,任何类似的事情都很容易出错,因为它使您的网络变得不那么清晰,并且需要更多的注意力来了解正在发生的事情以及如何解决问题。这反过来又会给IPSec或SIP或其他复杂协议带来另一个问题;这是不可避免的。
要在不引入模糊配置选项的情况下修复这个问题,请遵循Esa Jokinen的建议。我将以更广泛的方式来谈论它:由于192.168.0.x和192.168.1.x恰好是各种家庭设备的默认设置,所以永远不要使用这些网络办公,而且可能也应该将192.168.88.x也包括在停止列表中,因为这是Mikrotik设备的默认设置,它们也很受欢迎。
将办公网络重命名为永远不使用这些子网将导致最干净的总体网络设计。(这个想法甚至扩展到其他网络体验,例如,永远不要使用默认的VLAN 1,等等)。
最简单和最令人困惑的解决方案将是以下解决办法。您不能只使用push "route 192.168.1.0 255.255.255.0",因为您将失去对所有本地资源的访问权。但是您仍然可以将路由推送到子网中的各个地址。例如,如果许多客户端受到影响,请将以下行添加到服务器的配置中:
push "route 192.168.1.42"(假定是255.255.255.255的掩码)。如果家庭网络中的目标客户端地址是192.168.1.42,这是唯一不能工作的情况;在这种情况下,没有任何帮助。然后重新启动服务器。如果只有少数客户端受到影响,您可以跳过服务器重新启动(这意味着中断),将route 192.168.1.42添加到受影响的客户端配置中,并强制它们重新连接。
https://serverfault.com/questions/1100623
复制相似问题