--ifconfig
选项,为点对点隧道接口配置本地和对端IP地址,是强制配置选项开放VPN。但是,本地 IP 地址和对等 IP 地址的用途是什么?我能想到的唯一目的是可以使用这些 IP 地址将流量路由到隧道。例如,对等 IP 地址在ip route add 10.10.3.0/24 via 192.168.1.2 dev tun0
哪里。192.168.1.2
然而,对于点对点链路,应该能够将流量直接路由到接口上,例如ip route add 10.10.3.0/24 dev tun0
。
答案1
历史上,在 IPv4 中,未编号的接口是不可能的。配置点对点接口的唯一可能方法是使用本地地址和远程地址。通过所讨论的点对点接口路由其他 IP 地址的唯一方法是使用接口的远程地址作为网关来安装路由(命令route
或内核中没有选项通过接口指定目的地)姓名)。在那些日子里,您会看到大量宝贵的 IP 地址被用作 SLIP 连接上的接口地址。
即使现在,IPv4 接口至少需要在其上配置某种类型的地址,如果只是作为源自该接口的 ICMP 错误的源地址(这就是traceroute
检测路由器上哪个接口被遍历的方法)。
但你什么能现在要做的(历史上不能做的)就是使接口无编号。这意味着为其提供与系统上其他接口相同的 IP 地址。通常,稳定的始终在线接口(例如环回接口或路由器的“主”接口)充当 IP 地址的提供者。至于远程 IP 地址,您根本不必提供(但请参阅下一段)。如您所知,如果没有指定远程 IP 地址,您可以使用ip route ... dev <interface>
而不是ip route ... via <address>
将流量引导到接口中。总而言之,这可以大大节省 IP 地址。 (顺便说一句,有趣的是,虽然在 UNIX 中,未编号的接口隐含在本地 IP 地址不唯一的事实中,但在其他操作系统(例如 Cisco IOS)上,它非常明确:命令是ip unnumbered <donor-interface-name>
.
尽管如此,在 OpenVPN 中,指定远程 IP 地址似乎不是可选的。但是,您可以指定一个任意的远程地址。例如,如果隧道的另一端是另一台路由器,您可以使用远程路由器的环回或“主”IP 地址(基本上反映远程端的未编号配置),从而不消耗隧道的 IP 地址。如果您愿意让路由表看起来有点难看,您实际上可以使用完全伪造的 IP 地址作为 ifconfig 远程地址;一切都会正常工作,并且虚假地址永远不会出现在任何地方(即使在跟踪路由中)。