我的 Ubuntu 服务器在一个子网上有一些非常愚蠢的 IP 设备,服务器从每个设备接收流数据。我遇到了一个问题,当设备在将数据流式传输到服务器时向设备发出 ARP 请求时,该请求将被忽略,缓存条目超时并且服务器停止接收流。
因此,为了防止服务器完全向这些设备发送 ARP 请求,我想为每个设备添加一个静态 ARP 条目,例如
arp -i eth2 -s ip.of.the.device mac:of:the:device
Run Code Online (Sandbox Code Playgroud)
但是,如果禁用/启用网络或重新启动服务器,这些“静态”ARP 条目将丢失。自动添加这些条目的最佳位置在哪里,最好是每次启动接口 eth2 时都会重新添加它们的地方?
我真的不想编写一个脚本来监视输出arp并在它们丢失时重新添加缓存条目。
编辑以添加我的最终脚本:
创建了文件
/etc/network/if-up.d/add-my-static-arp
Run Code Online (Sandbox Code Playgroud)
内容如下:
#!/bin/sh
arp -i eth0 -s 192.168.0.4 00:50:cc:44:55:55
arp -i eth0 -s 192.168.0.5 00:50:cc:44:55:56
arp -i eth0 -s 192.168.0.6 00:50:cc:44:55:57
Run Code Online (Sandbox Code Playgroud)
然后显然添加允许它执行的权限:
chmod +x /etc/network/if-up.d/add-my-static-arp
Run Code Online (Sandbox Code Playgroud)
每次启动任何网络接口时,都会手动添加或重新添加这些 arp 条目。
我有一个“3one data”品牌的串行到以太网转换器,它的一端插入串行设备,并允许通过以太网连接与设备进行双向通信,如下所示:

据说有一种方法可以在 Ubuntu 中设置一个虚拟串口,它映射到该设备的 IP 和端口,并允许与另一端的真实串口设备进行透明通信。不幸的是,该设备没有随附的 linux 文档,尽管 linux 支持已被显着宣传。
我正在努力在 Ubuntu 中设置这个虚拟串口,我认为这应该通过ttyd命令来实现。但是,连接设备后(我可以直接 telnet 到它),如果我运行:
sudo ttyd -d /dev/ttyp1 192.168.1.25 50000 -b 115200 -p 8NC0
Run Code Online (Sandbox Code Playgroud)
我的理解是应该创建一个新的虚拟串行设备/dev/ttyp1,但这不会发生。ttyd上面的命令不会抛出任何错误。