使用 Raspberry PI 通过 VPN 路由流量

使用 Raspberry PI 通过 VPN 路由流量

我有这样的设置:

  • 树莓派通过网线连接到路由器
  • 在 eth0 和 wlan0 之间创建桥接连接
  • 用于hostapdWi-Fi 热点
  • 配置了与我的一台在线服务器的 l2tp/ipsec 连接

我遇到的问题和目标:

  • 目标是让这个 Raspberry Pi 作为 Wi-Fi 路由器,通过我的 VPN 路由所有通过 Wi-Fi 传入的流量
  • 我遇到的问题问题是,当我执行curl 操作时,Raspberry Pi 正在使用VPN 隧道,但所有连接的Wi-Fi 访客都无法获取VPN IP。

界面示例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether b8:27:eb:21:2b:9a brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether b8:27:eb:21:2b:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.7/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba27:ebff:fe21:2b9a/64 scope link
       valid_lft forever preferred_lft forever
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether b8:27:eb:74:7e:cf brd ff:ff:ff:ff:ff:ff
6: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc pfifo_fast state UNKNOWN group default qlen 3
    link/ppp
    inet 192.168.42.11 peer 192.168.42.1/32 scope global ppp0
       valid_lft forever preferred_lft forever

路由表:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 br0
45.36.81.212    192.168.1.1     255.255.255.255 UGH   0      0        0 br0
63.126.53.74    192.168.1.1     255.255.255.255 UGH   0      0        0 br0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.42.1    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

45.36.81.212 是我的 VPN
63.126.53.74 是我自己的本地公共 IP
(由于显而易见的原因,ips 已略有更改)。

操作系统: 树莓派

将 wlan0 转发到 ppp0 可以解决问题,还是我需要篡改 br0?

答案1

我有一个类似的设置,其中一些客户端使用作为 VPN 隧道设备的网关,而其他客户端则使用常规的旧 ISP 提供的互联网连接到家里。

我没有在 VPN 网关上桥接 wifi 和以太网。相反,该机器运行 VPN 客户端。这迫使 VPN 网关检查路由表来处理网桥将绕过的流量。

在 VPN 网关上我有三个 IP:

  • eth0:192.168.1.254 basically just a client on my main network
  • 以太网1:192.168.2.1the gateway for the alternate network
  • tun0:10.2.3.5this is a VPN tunnel, and the IP is different every time the tunnel comes up

我还在 VPN 网关上维护 3 条静态路由:

  • 默认路由器 -> 192.168.1.1
  • 0.0.0.0/1 -> 10.2.3.5
  • 128.0.0.0/1 -> 10.2.3.5

VPN 的一条重要动态路由: - 10.2.3.5 -> 10.2.3.6

到我的 ISP 网关 (192.168.1.1) 的默认路由可确保 VPN 网关始终能够找到互联网。

另外两条路由是两条“更具体”的路由,恰好涵盖了所有 IPv4 地址空间。因此,任何到任何地方(除了任何直接连接的网络之外)的流量都会传递到 VPN 隧道接口,并且 VPN 隧道的特定动态路由10.2.3.5 -> 10.2.3.6会传递穿过隧道的所有流量。

通过这种方式,所有通过 VPN 网关访问 Wifi 的客户端都会被路由出 VPN 隧道,并且我仍然可以让客户端访问我的 ISP 网络 (wifi),以便在需要或需要时获得常规互联网访问。

相关内容