VPN连接的网络接口说明

whe*_*kie 5 vpn ifconfig

我想知道在我与公司的 VPN 建立连接时到底发生了什么。

当我连接(使用 OpenVPN)时,我通过使用看到以下网络接口ifconfig

utun3: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        inet 10.8.0.18 --> 10.8.0.17 netmask 0xffffffff
Run Code Online (Sandbox Code Playgroud)

这看起来与其他网络接口不同,因为它有两个以“-->”分隔的 IP 地址。

问题)

这两个数字哪个是我的实际 IP 地址?那另一个是什么?网络掩码怎么可能0xffffffff?似乎没有留下任何地址空间来识别网络上的单个主机。

我知道这是多个问题,但它们似乎都非常密切相关,所以我想我会问所有问题。

use*_*686 8

这是一个点对点接口,也称为隧道或对等接口。它的行为不像 Wi-Fi 或以太网等“共享媒体”接口,后者通过使用第 2 层 MAC 地址将您连接到多个设备。相反,它的行为就像一条两端都只有主机的电缆。

(实际上,这种接口最初是指运行 PPP 或类似协议的串行链路电缆。但对于tun*utun*接口,“另一端”是 VPN 程序。)

点对点接口上没有第 2 层报头、MAC 地址和 ARP,因为通过它发送的所有内容都到达相同的目的地(“对等”主机)。

似乎没有留下任何地址空间来识别网络上的单个主机。

可以这么说,它实际上没有“子网掩码”;它只是两个单一地址。这是点对点链路的常见配置,尽管不是它们独有的。

使用“普通”接口,使用像192.168.1.3/24eth0这样的子网掩码配置地址实际上只是说“我的地址是192.168.1.3,我也有一个链接路由192.168.1.0/24 dev eth0”的简写。链路上的路由是通过结合地址和子网掩码得出的。

对于点对点接口,它实际上是相同的想法。您的示例的意思是“我的地址是10.8.0.18,我也有一个链接路由10.8.0.17/32 dev utun3。” 在这种情况下,自动生成的路由是 /32,表示只有一个主机——“对等”。

(注意:我的示例使用 Linux iproute2 风格的语法。)

所以归根结底,这两种配置风格的区别就在于那条自动路由。

事实上,在其他一些操作系统(例如 Linux)中,任何接口都可以使用子网式或 PtP 式配置。VPN 和其他点对点隧道通常具有传统的子网掩码,因为自动生成的路由对它们很有意义(即使没有实际的 MAC 子网)。在极少数情况下,普通以太网接口可能会使用 PtP 样式的X --> Y配置,因为它们位于一个奇怪的网络上。


顺便说一句,你可能会在点至点接口看到另一种配置是/ 31,这是一个子网只有两个地址总量和双方都是主机地址- / 31前缀实际上是从通常的“网络标识符号和广播免除被保留" 规则(尽管并非所有操作系统都已更新以了解这一点)。