Linux内核现在支持一种全新的vrf ()体系结构,它不同于旧的网络命名空间解决方案。
问题:
linux内核支持多少个vrf?
什么系统资源限制了vrf容量?
我是一个新手,在内核源代码,并找不到有关前两个问题的信息。
我编写了一个添加4096 vrf的脚本,并将vrf设备设置在一个开放的x86对接容器中,一切都很好。
剧本:
def main():
for i in range(0, 4096):
cmd("ip link add vrf%d type vrf table %d"%(i,i))
sleep(50)
据我所知,Linux内核在IPv4文件中为netfilter_ipv4.h数据包流定义了五个挂钩点:
/* IP Hooks */
/* After promisc drops, checksum checks. */
#define NF_IP_PRE_ROUTING 0
/* If the packet is destined for this box. */
#define NF_IP_LOCAL_IN 1
/* If the packet is destined for another interface. */
#define NF_IP_FORWARD 2
Linux现在支持轻量级隧道https://lwn.net/Articles/650778/,这意味着在路由上配置隧道(因此不需要通过隧道设置一个接口)。
但不幸的是,我没有找到很多关于它们的文档。在上面链接的补丁系列中,语法是ip route add 40.1.1.1/32 encap vxlan id 10 dst 50.1.1.2 dev vxlan0。
但是在我当前的iproute-5.2.0中,没有encap vxlan,只有encap ip id ... (使用mpls、bpf、seg6.)。它看起来像外壳类型是自动检测根据设备。所以不要做
$ ip link add dev
业务案例:
今年是2015年,我使用的是Linux内核3.17。我的ARM Linux有两个网卡,eth0和eth1。eth0用于在本地为旁边的人配置,eth1用于从远程进行配置。因此,它们的功能基本相同,除了eth0有一个人在现场插入电缆。
本地PC - eth0 My ARM Linux Computer eth1 -远程PC
使用eth0,PC软件可以配置用于配置的eth1 IP地址和端口。为此,我的eth0有一个预设的IP地址(192.168.1.2),这样PC软件就可以很容易地找到它。ARM Linux (3.17)应用程序需要侦听eth0端口A和eth1端口B(如果已配置),一旦连
我试图限制脚本中生成的子subshells的数量,该脚本用于嗅探内部网络,以审计网络中的Linux服务器。该脚本按预期工作,但由于我嵌套for循环的方式,它为每个网络生成255个子Shells,因此由于产生的进程超过1000个,所以它杀死了CPU。我需要能够限制进程的数量,而且由于变量在Sub Shell中丢失了值,所以我无法找到一种方法来使其工作。同样,这个脚本可以工作,它只会产生一吨的进程--我需要将它限制在,比如说最多10个进程:
#!/bin/bash
FILE=/root/ats_net_final
for network in `cat $FILE`;do
我试图在linux中使用IPV6地址添加一个使用GRE作为报头的传输GUE隧道,如下所示:
ip -6 link add name gue1 type ip6gre remote $REMOTE_IPV6 local $LOCAL_IPV6 dev eth0 encap gue encap-dport 42424
$REMOTE_IPV6和$LOCAL_IPV6都是有效的IPV6地址。但是我不断地发现这个错误:
RTNETLINK answers: Invalid argument
如果我删除了encap gue,那么它不会给出这个错误,因为它会默认为none类型。然而,来自ip link h