试图找出如何使用iproute2来管理Linux内核4.1中的静态标签交换MPLS路由.
我知道iproute2对MPLS的支持现在可能不完整[2].
任何人都可以了解iproute2-4.1.1目前能够做些什么?
这是我到目前为止所发现的:
/ proc/sys/net/mpls/platform_labels/proc/sys/net/mpls/conf //输入
sudo modprobe mpls_router
Run Code Online (Sandbox Code Playgroud)
sysctl -a --pattern mpls
net.mpls.conf.eth0.input = 0
net.mpls.conf.eth1.input = 0
net.mpls.conf.lo.input = 0
net.mpls.platform_labels = 0
Run Code Online (Sandbox Code Playgroud)
sudo sysctl -w net.mpls.conf.eth0.input=1
sudo sysctl -w net.mpls.conf.eth1.input=1
sudo sysctl -w net.mpls.platform_labels=1000
Run Code Online (Sandbox Code Playgroud)
sudo ip route add 1.1.1.1/32 via mpls 100/200/300 dev eth0
Run Code Online (Sandbox Code Playgroud)
sudo ip -f mpls route add 10 via mpls 100/200/300 dev eth0
Run Code Online (Sandbox Code Playgroud)
???
???
有人可以帮我吗 .提前致谢.
我正在使用bash来获取该脚本的机器的IP地址:
_MyGW="$( ip route get 8.8.8.8 | awk 'N=3 {print $N}' )"
Run Code Online (Sandbox Code Playgroud)
现在我想尝试这种类型的子网掩码:
192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)
但我不知道我该怎么做.
目标是在具有多个接口和实时ips的计算机上频繁更改默认传出源ip.
我根据其文档使用ip route replace default,让脚本在循环中运行一段时间.它改变了源IP一段时间,但随后所有对该机器的互联网访问都丢失了.必须从Web界面远程重新启动才能使任何工作正常
是否有任何可能阻止这种情况稳定运行的事情.我在多台服务器上试过这个?
以下是最低限度的示例
# extract all currently active source ips except loopback
IPs="$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 |
awk '{ print $1}')"
read -a ip_arr <<<$IPs
# extract all currently active mac / ethernet addresses
Int="$(ifconfig | grep 'eth'| grep -v 'lo' | awk '{print $1}')"
read -a eth_arr <<<$Int
ip_len=${#ip_arr[@]}
eth_len=${#eth_arr[@]}
i=0;
e=0;
while(true); do
#ip route replace 0.0.0.0 dev eth0:1 src 192.168.1.18
route_cmd="ip route replace 0.0.0.0 dev …Run Code Online (Sandbox Code Playgroud) TLDR:有没有办法使用“ip route”为多个 NIC 添加多播路由?
我们有软件将绑定到不同 NICS 上不同 IP 地址的两个套接字连接到两个单独的多播组,例如,套接字 1 绑定到 192.168.0.2 并加入多播组 233.255.10.1,而套接字 2 绑定到 10.57.31.2 并加入到多播组 239.255.100.1。
我们目前正在使用 bash 脚本(Linux 内核 3.14.39)使用路由在两个网络接口上设置多播路由,例如
route add -net 224.0.0.0 netmask 240.0.0.0 eth0
route add -net 224.0.0.0 netmask 240.0.0.0 eth1
Run Code Online (Sandbox Code Playgroud)
并通过 route -n 验证
Destination Gateway Genmask Flags Metric Ref Use Iface
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth0
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth1
Run Code Online (Sandbox Code Playgroud)
我最近读到该路由已弃用/过时,我们应该改用 ip route,例如
ip route add 224.0.0.0/4 dev eth0
ip route add 224.0.0.0/4 dev …Run Code Online (Sandbox Code Playgroud) 是否可以在不同的程序类型之间共享 ebpf 映射。我需要在 tc-bpf 程序和 cgroup bpf 程序之间共享一个映射。如果映射被固定到充当全局命名空间的文件系统,这应该是可能的。但是,我没有得到这个工作。
该映射由 tc-bpf 程序创建并固定到全局命名空间。由于是 tc-bpf 程序,所以映射的类型是 struct bpf_elf_map。这个 bpf 程序是通过 iproute2 加载的。
现在,我有一个应该访问此映射的 cgroup bpf 程序,但由于它是通过 user.c (libbpf) 或 bpftool 而不是 iproute 加载的,因此此处定义的映射不能是“bpf_elf_map”,但它是结构bpf_map_def。所以在 cgroup bpf 程序中,相同的映射被定义为 struct bpf_map_def 而不是 struct bpf_elf_map。
可能正因为如此,当我转储地图(并且不共享预期的地图)时,cgroup 程序会获得一个新的 map_id,理想情况下,当同一个地图在 bpf 程序之间共享时,这些 bpf 程序将具有与其唯一关联的相同 map_id prog_ids。