我正在使用 raspberry pi 作为 xbox 360 的 openvpn 客户端,因为在我的大学里,我因为严格的 nat 类型或连接限制而被踢出 xbox live。我可以很好地连接到 vpn,我只需要知道如何将 tap 接口与 pi 上的 eth0 接口桥接。基本上,我正在做的是将以太网端口从 pi 连接到 xbox,以将 vpn 共享到 xbox。pi 通过 wlan0 通过 wifi 连接到互联网,尽管我可能会在某个时候购买 usb 以太网网卡以使其更稳定。这需要在从 pi 启动时自动运行,因此如果发生电源故障,它将自行重新连接。
我使用我的笔记本电脑来共享与我的 xbox 的 vpns 连接,并且它运行良好,所以我知道我的理论是可行的,我只是需要一种方法来在 pi 上执行它,这样我就不必用我的笔记本电脑来做这项工作。
答案1
桥接两个连接很容易。我将避免使用现已弃用的 bridge-utils,而是使用iproute2实用程序:
ip tuntap add tap0 mode tap user root
ip link set tap0 up
ip link add br0 type bridge
ip link set tap0 master br0
ip link set dev eth0 down
ip addr flush dev eth0
ip link set dev eth0 up
ip link set eth0 master br0
ip link set dev br0 up
现在您可以为 br0 分配一个地址。
编辑:
你是对的,你说了一些不正确的话:tun 接口和 tap 接口之间有一个关键区别,tun 接口不能桥接。从维基百科:
TUN(即网络隧道)模拟网络层设备,它处理第 3 层数据包(如 IP 数据包)。TAP(即网络分路器)模拟链路层设备,它处理第 2 层数据包(如以太网帧)。TUN 用于路由,而 TAP 用于创建网桥。
因此错误信息相当重要,IE这是无法纠正的。
为了使 tun 接口工作,你需要创建它(替换模式点击和模式调谐为其分配一个 IP 地址超出 LAN 范围,在文件 /etc/sysctl.conf 中激活 IP 转发并重新启动 sysctl。路由配置是自动的,无需对其进行操作。最后,假设您的 Pi 通过 eth0 连接,请按如下方式更改 iptables 规则:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
不过,尽管很有启发性,但这应该由您的 VPN 自动完成:OpenVPN 肯定会这样做。为什么您的 VPN 不负责这个呢?