在/sf/ask/1745252071/中,有人询问网络接口名称可以有多长(显然是 16 个字节)。然而,该问题的答案似乎没有链接到有关该名称的其他限制的任何信息,例如:
\nip link我能够将;rm和-f作为有效名称,但它似乎无法解析带有空格的名称(尽管这可能只是其参数解析器的产物,实际上并不是一种保护)针对有问题的价值观))。\xce\xb1显示__,并且不能通过名称删除\xce\xb1)是否有关于接口可以被调用的内容以及在哪一层强制执行的文档(例如在内核、iproute2、libc 中)?
\n上下文:编写一个接受将存储在数据库中的接口名称的 CLI 命令,我想确定可以对坏名称进行多少过滤,而不会导致奇怪命名(尽管可能不是敌意)接口的问题。
\n是否有可能在数据包数据到达接口之前和接收之后拦截它?例如预处理它并在途中将其送回?
我想创建一个自定义解决方案,就像这个名为 vtun 的伟大程序一样。它创建了一个充当接口的虚拟设备。这使其能够执行各种操作,例如流量压缩、加密、整形等。
我想知道现在是否可以更轻松地完成(vtun 已经很老了……)。我的目标操作系统是 Ubuntu 14.04。
我有两个 PPP 对等点,dsl-line1 和 dsl-line2,它们在 Ubuntu(服务器)Linux 上配置了 pppd。
它们由 /etc/network/interfaces 文件和 auto thingy 启动,但是每个 PPP 连接选择名称 pppX,其中 X 取决于哪个首先出现。
我想让 dsl-line1 提供一个名称,例如“dsl0”,而 dsl-line2 的名称类似于“dsl1”,以便我可以更轻松地为每个规则创建防火墙规则并设置路由(以及因为更容易配置)。
我的问题是如何让 pppd 的接口自行命名?
/etc/ppp/peers/dsl-line1(dsl-line2除了去掉默认路由和以太网接口不同外,基本相同)
noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
lcp-echo-interval 10
lcp-echo-failure 3
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth1
user "xxxx@xxxx.xxx"
Run Code Online (Sandbox Code Playgroud)
/etc/network/interfaces(line1 部分,同样,2 非常相似)
auto dsl0
iface dsl0 inet ppp
pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
post-up /bin/sh /home/callum/ppp0_up.sh # Route everything
post-up /bin/sh …Run Code Online (Sandbox Code Playgroud) 我想知道为什么我的网络接口仍然eth0在我的 kvm 来宾中命名。udevadm 只是输出
# udevadm test-builtin net_id /sys/class/net/eth0 2> /dev/null
ID_NET_NAME_MAC=enxc2184ae7ab3f
Run Code Online (Sandbox Code Playgroud)
我希望他们被称为像enpXsY. 目录/etc/udev/rules.d为空。Linux 品牌是 Gentoo,3.15.5-hardened-r2。虚拟化是KVM with qemu 2.0,网络接口是virtio。在主机和其他机器上,设置与 udev 相同,但接口按预期以其新名称调用。
为什么会这样?启用新标识符需要什么?
我的第一个想法是新标识符指的是 PCI 设备,而 virtio 设备不是 PCI 设备。然而,lspci事实证明我错了:
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
Subsystem: Red Hat, Inc Device 0001
Flags: bus master, fast devsel, latency 0, IRQ 11
I/O ports at c040 [size=32]
Memory at febd1000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at feb80000 [disabled] [size=256K]
Capabilities: [40] …Run Code Online (Sandbox Code Playgroud) 我希望在特定接口上永久禁用 IPv6,因为它坏了,我关于超级用户修复它的问题已经死了,所以我该怎么做呢?我已经添加了net.ipv6.conf.eth0.disable_ipv6=1,/etc/sysctl.conf但由于某种原因它不起作用。目前,我每次打开电脑时都只使用 sysctl 命令来禁用它。
我正在使用 2 个 wifi 加密狗。第一个用于监控,第二个用于访问互联网。即使我/etc/udev/rules.d/70-persistent-net.rules如下更改,在启动时有时wlan0也无法分配。由于wlan1用于其他设备,wlan0因此重命名为rename3. 我wlan0用于特定目的,并将其接口名称提供给另一个程序。如何wlan0永久设置以便我正在使用的其他程序wlan0可以继续运行?
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="AA-12-00-00-2B-8B", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="e8:4e:06:24:c2:df", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"
Run Code Online (Sandbox Code Playgroud) 我正在使用的机器有 4 个网络接口,目前只有其中一个正在使用(其他 3 个根本没有插入)。当前,当机器重新启动时,尝试启动接口 2-4 会延迟几分钟。这是一个非常大的烦恼,因为这台机器经常重启。
运行 dmesg 我看到:
[15] IPv6 ADDRCONF(NETDEV_UP): eth1: link is not ready
[57] IPv6 ADDRCONF(NETDEV_UP): eth2: link is not ready
[98] IPv6 ADDRCONF(NETDEV_UP): eth3: link is not ready
[140] ...
Run Code Online (Sandbox Code Playgroud)
看到这些接口没有被使用并且占用了很多时间,我想简单地禁用它们尝试启动,但我愿意接受其他选项,以减少浪费在这些接口上的时间。
我已经检查/etc/sysctrl.conf并禁用了 IPv6,所以我不认为它会尝试 IPv6。
在 network-scripts 目录中,我为接口 2-4 创建了脚本,其中只包含它们的接口名称和ONBOOT=no.
我还查看/sys/class/net/ethX/device/power/control了每个界面,所有界面都包含“on”,所以我尝试了:
echo off > /sys/class/net/ethX/device/power/control
Run Code Online (Sandbox Code Playgroud)
但我得到了write error: Invalid argument,而回声on效果很好。我一直无法找到更改此文件的参考,但我觉得完全关闭接口似乎有点极端。
我没有安装网络管理器,如果可能的话,我更愿意保持这种方式(更喜欢配置而不是在问题上抛出更多包)。
从那以后,我已经解决了这个问题,但是为了其他可能会遇到这个问题的人,我会提到,dmesg报告这些长时间等待的事实表明内核正在尝试启用这些接口。所以内核参数可能是一个追求的途径,或者它可能只是一个内核错误。Linux 本身的配置不太可能解决问题,grub配置或内核本身的更改可能会解决问题。
更新
我发布的自我回答实际上确实有机会进行测试,但没有成功。但是,发布我尝试过的内容。
注意到来自dmesg内核的消息表明内核正在执行我查看内核参数文档的操作:https : //www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
我发现有一个在接口上配置 …
如何在网络适配器上启用混杂模式。我已经加入试图PROMISC=yes在/etc/sysconfig/network-scripts/ifcfg-ensxxx
即使网络重启,但没有效果或重新启动系统。
我使用以下方法创建环回接口: #ifconfig lo1 create
问题是当我重新启动机器时,我的配置丢失了。
我试图修改/etc/rc.conf文件,但我没有找到正确的方法。
谁能告诉我我该怎么做?
谢谢!
Linux 的设计方式,一旦你失去互联网连接,你就完蛋了。因为没有互联网,你不能安装程序,你可能只需要一些程序来设置互联网。
带有 xfce 的 Debian 没有内置的 gui 来确保这个问题更加危险。我不确定我到底做错了什么,但是我的虚拟机中的 Debian 在克隆虚拟网卡后停止与虚拟网卡通信,我认为这与 mac 地址更改有关。我尝试在更改虚拟盒卡设置时重新启动它,但没有任何反应。
Windows 的替代品ipconfig似乎是ip,我得到了这个ip a:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default
链接/环回 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 范围主机 lo
valid_lft 永远首选_lft 永远
inet6 ::1/128 范围主机
valid_lft 永远首选_lft 永远
2: eth0 : <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
链接/以太 08:00:27:98:5a:42 brd ff:ff:ff:ff:ff:ff
好像界面被关闭了。这本身就很奇怪,硬件连接在virtualbox端。mac 地址与 virtualbox 设置匹配,因此必须从硬件加载地址。
有没有办法像我在 Windows 中那样配置网络连接?比如看硬件是否找到,是否与dhcp通信等等?