我正在尝试建立一个系统,将未标记的以太网网络加入 TAP 隧道,在流量移动到隧道时添加 VLAN 标记。
到目前为止,我有:
eth0
- 承载未标记流量的物理以太网接口。tap1
- TAP 隧道接口。br0
- 一个包含tap1
(和一些其他物理接口)的网桥我知道我可以通过执行以下操作在以太网端添加 VLAN 标记:
$ ip link add link eth0 name eth0.5 type vlan id 5
$ brctl addif br0 eth0.5
Run Code Online (Sandbox Code Playgroud)
但是我怎么能反过来呢?
编辑我发现我可以做到这一点:
$ ip link add veth0 type veth peer name veth1
$ ip link add link veth0 name veth0.5 type vlan id 5
$ brctl addif br0 veth0.5
$ brctl addbr br1
$ brctl addif br1 eth0
$ brctl addif …
Run Code Online (Sandbox Code Playgroud) 我有一个连接到网桥的以太网端口:
$ brctl show
bridge name bridge id STP enabled interfaces
eth0_bridge 8000.6a612bcc4723 yes eth0
Run Code Online (Sandbox Code Playgroud)
网桥是 VLAN 感知的(即/sys/class/net/eth0_bridge/bridge/vlan_filtering
是1
)。我希望能够向该网桥添加其他接口并为它们分配 VLAN,如下所示:
ip link set eth1 master eth0_bridge
bridge vlan add dev eth1 vid 10 pvid untagged
Run Code Online (Sandbox Code Playgroud)
这应该将 eth1 上的未标记流量连接到 eth0 上的 VLAN 10。但是直到我:
bridge vlan add dev eth0 vid 10
Run Code Online (Sandbox Code Playgroud)
一旦我这样做了,那么一切都会根据需要进行。但是有没有办法告诉它eth0
是网桥上的中继端口,eth0_bridge
它应该承载所有VLAN,然后对网桥的出口进行 VLAN 过滤?
我知道我可以使用$()
命令的输出或将命令的输出分配给变量,然后使用它。但是我可以将命令的输出粘贴到当前命令行上以便进行编辑吗?
如果我有鼠标,那就很容易 - 复制和粘贴。但有时我在使用鼠标非常不方便的系统上工作。有没有办法仅通过键盘来完成此操作?
典型的用例是当我想标记 git 存储库时:
$ git describe
2.20.0-5-1-g99a731f4e3
Run Code Online (Sandbox Code Playgroud)
我那么想git tag 2.20.0-6
。有没有办法将以前的标签放入命令行以便我可以编辑它?显然,除了打字之外。或者构建一个sed
命令来进行编辑。