无需 VPN 即可在两个独立系统之间进行路由

无需 VPN 即可在两个独立系统之间进行路由

对你来说奇怪的情况:

我有两个运行 Raspbian 8 (jessie) 的 Raspberry Pi,它们通过以太网端口之间的交叉电缆相互连接。单元 A 上的以太网端口静态配置为 10.5.10.1。单元 B 上的以太网端口静态配置为 10.5.10.2。以太网接口的子网掩码为 255.255.255.0 - /24。

两个设备都在其 Wifi 接口 (wlan0) 上运行主机接入点守护程序 (hostapd) 和 DHCP 服务器。它们各自都有一个唯一的 SSID:设备 A 为“raspiA”,而设备 B 为“raspiB”。设备 A 在通道 1 上运行。设备 B 在通道 11 上运行。

单元 A 上的 wlan0 适配器静态分配为 10.10.1.1。单元 A 上的 DHCP 服务器提供的地址范围为 10.10.1.50 - 10.10.1.250。单元 B 上的 wlan0 适配器静态分配为 10.10.2.1。单元 B 上的 DHCP 服务器提供的地址范围为 10.10.2.50 - 10.10.2.250。wlan0 适配器的子网掩码均为 /24。

这些系统是完全独立的——没有与互联网的连接。

两个系统都运行一个进程,该进程在端口 80 上运行 HTTP 服务器,可从任一接口(eth0 或 wlan0)访问。

我希望连接到系统 A 上的接入点的客户端能够访问 10.10.1.2 上的系统 B 上的进程。

我希望连接到系统 B 上的接入点的客户端能够访问 10.10.2.2 上的系统 A 上的进程。

[Client 1]         [Unit A              ]        [Unit B ]
10.10.1.50 —wifi—> 10.10.1.2 —> 10.5.10.1 —eth—> 10.5.10.2

和...

[Unit A ]        [Unit B              ]         [Client 2]
10.5.10.1 <—eth— 10.5.10.2 <— 10.10.2.2 <—wifi— 10.10.2.50

实现这一目标的最佳方法是什么?

答案1

您需要做的就是在 A 和 B 上启用 IP 转发(以 root 身份):

echo 1 > /proc/sys/net/ipv4/ip_forward

答案2

我终于找到了一个可行的配置。它允许客户端加入任一网络并访问两个系统。它也不需要路由,这一点很重要,因为任何分配路由器(默认网关)的方案都会导致移动客户端(iOS、Android)优先使用 Wifi 接口而不是 4G 接口,从而切断互联网访问。

我通过将所有内容移至相同的 /24(c 类)网段来简化 IP 方案。我在两个系统上的 eth0 接口和 wlan0 接口之间设置了网桥。系统 A 上的网桥分配为 .1,系统 B 上的网桥分配为 .2。系统提供的所有服务都绑定到网桥地址上可用的 /。

我调整了每个系统上的 DHCP 守护进程,使其服务于与 /24 不同的范围(即系统 A 为 .50 - .149,系统 B 为 150 - 249)。由于系统桥接在一起(即都在同一个网段上),因此任何 DHCP 请求都变成了一场竞赛,两个守护进程都会响应。由于两个请求都在同一个 /24 中,因此哪一个“获胜”并不重要。

这会产生某种形式的冗余。如果其中一个系统崩溃,客户端可以重新关联另一个系统上的接入点。如果其中一个系统上的应用程序崩溃,客户端可以连接到另一个系统上的实例。这两个系统还可以互相监视、镜像配置和交叉检查数据。

这种方法的一个限制是客户端必须知道应用程序在 .1 和 .2 上可用。未来的迭代可能会包括某种 MDSN / Avahi 支持,允许客户端自动发现服务器。

脚步:

  1. 安装bridge-utilshostapdisc-dhcp-server
  2. 编辑/etc/sysctl.conf
    1. 添加或取消注释net.ipv4.ip_forward = 1
  3. /etc/network/interfaces
    1. 将 eth0 和 wlan0 标记为手动
    2. 添加具有所需静态网络配置的 br0 桥
    3. 仅添加 eth0 接口(wlan0 将由 hostapd 添加)
  4. 编辑/etc/dhcpcd.conf
    1. denyinterfaces eth0 wlan0通过在底部添加来从 DHCP 中排除 eth0 和 wlan0 。
  5. 编辑/etc/default/isc-dhcp-server
    1. 将值设置INTERFACESbr0
  6. 编辑/etc/dhcp/dhcpd.conf
    1. 创建新的子网条目
    2. 将一定数量的客户端可用 IP 添加到范围中
    3. 不要添加“选项路由器”
  7. 编辑/etc/hostapd/hostapd.conf
    1. bridge=br0在底部添加

对另一个系统重复此过程,更改分配给网桥的 IP(步骤 2.2)和 DHCP 服务器提供的地址范围(步骤 5.2)。使用电缆连接以太网端口。重新启动。瞧 - 冗余、扁平的网络。

相关内容