vic*_*mea 4 networking linux vpn iptables tunnel
我需要制定一个解决方案,作为具有两个端口的网络交换机:一个端口位于一个国家/地区,第二个端口位于另一个国家/地区。
+------------ Virtual switch ----------------+
+---------+ | +-------+ +----------+ +-------+ | +--------+
|Client A |<--+-->| BOX 1 |<-->|VPN server|<-->| BOX 2 |<--+-->|Client B|
+---------+ | +-------+ +----------+ +-------+ | +--------+
+--------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
客户端 A 和客户端 B 应该感觉就像通常的第 2 层交换机。两个盒子之间的 VPN 连接是 OpenVPN。所以我需要通过两个盒子之间的 VPN 隧道以某种方式转发以太网帧。运行 Debian jessie 的框 1 和框 2。我希望不要为它编写自己的软件 :) 任何人都可以提出可能的解决方案吗?
PS 需要连接两个设计为只能在 LAN 中工作的硬件。
UPD:我已经安装了 4 台虚拟机来模拟这样的设置(vpnserver 被省略):
- 所有机器都是 debian 机器 - 机器
1 和机器2 在它们之间有 GRE 分路隧道(IP 以太网)
- 在客户端上与 gretap 桥接的本地接口接口:网桥的地址为 10.0.0.253
- 在与 gretap 接口桥接的客户端 B 本地接口上:网桥的地址为 10.0.0.254
- 客户端 A 的静态 IP 为 192.168.1.1
- 客户端 B 的静态 IP 为 192.168.1.2
我从客户端 A 向 192.168.1.2 发送 ICMP Echo 请求,我可以在 Box 1 的网桥、Box 2 的网桥和客户端 B 上看到 ARP 请求“Who has 192.168.1.2 tell 192.168.1.1”。但是ARP 响应仅在客户端 B 上可见。因此 ARP 响应不会以某种方式返回 Box2。10.0.0.253 和 10.0.0.254 之间的所有网络都运行良好。所以,我想这个问题是由桥接引起的。
UPD2:现在我移除了 GRE 分路隧道并在 Box 1 和 Box 2 之间建立了常规网络。当我创建网桥时,ping 开始工作。做GRE隧道时可能会导致什么问题?
解决方案:我终于用 GRE-TAP 配置了虚拟机中的所有内容。我在 Box 1 和 Box 2 之间的常规网络上使用了 GRE-TAP 隧道。然后我在每个 Box 上桥接了隧道接口与本地 interfacec。下面是我的步骤:
框 1
ip link add tunnel0 type gretap remote 192.168.0.2 local 192.168.0.1
brctl addbr br0
brctl addif br0 eth2 # eth2 - is a local interface on Box 1
brctl addif br0 tunnel
ip addr add 10.0.0.253 dev tunnel0
ip link set br0 up
ip link set tunnel0 up
Run Code Online (Sandbox Code Playgroud)
方框 2
ip link add tunnel0 type gretap remote 192.168.0.1 local 192.168.0.2
brctl addbr br0
brctl addif br0 eth2 # eth2 - is a local interface on Box 2
brctl addif br0 tunnel
ip addr add 10.0.0.254 dev tunnel0
ip link set br0 up
ip link set tunnel0 up
Run Code Online (Sandbox Code Playgroud)
谢谢大家!
我自己没有尝试过这个,但我知道你可以使用gretap第 3 层(ip)上的第 2 层(以太网)隧道。例如,根据此博客条目,您gretap在每一端设置一个接口并将其与以太网接口桥接。如果我理解正确的话,在示例中172.31.0.1应该是 Box 1 上 VPN 端点172.31.0.2的地址,Box 2 上 VPN 端点的10.10.10.1地址是 Box 1 的本地 LAN 地址,Box 210.10.10.2的 LAN 地址。
框 1:
ip link add gretap0 type gretap local 172.31.0.1 remote 172.31.0.2
ip link set dev gretap0 up
ip link set dev eth0 up
brctl addbr br0
brctl addif br0 gretap0
brctl addif br0 eth0
ip addr add 10.10.10.1/24 dev br0
ip link set br0 up
Run Code Online (Sandbox Code Playgroud)
方框 2:
ip link add gretap0 type gretap local 172.31.0.2 remote 172.31.0.1
ip link set dev gretap0 up
ip link set dev eth0 up
brctl addbr br0
brctl addif br0 gretap0
brctl addif br0 eth0
ip addr add 10.10.10.2/24 dev br0
ip link set br0 up
Run Code Online (Sandbox Code Playgroud)
您可能需要调整 MTU 设置。我无法测试此设置,因此您可能还需要调整其他内容。
编辑:这是一篇解释 MTU 问题的文章,显然它有点涉及。如果您可以控制 VPN MTU 设置,您的情况可能会更容易。
| 归档时间: |
|
| 查看次数: |
15953 次 |
| 最近记录: |