IPV4 Linux 网络配置

IPV4 Linux 网络配置

我无法弄清楚我配置错误的地方。我无法将数据包从 velodyne 返回到具有 2 个 eth 接口 em1 和 em2 的 Fedora 服务器上。我已使用 eth 电缆将 velodyne 连接到 em1 主机。

我知道 velodyne 正在 2368 上发送 UDP 数据包,我可以在 wireshark 上看到它们。我知道 velodyne 正在做出反应,因为它响应了 ping:

ping 192.168.0.27
PING 192.168.0.27 (192.168.0.27) 56(84) bytes of data.
64 bytes from 192.168.0.27: icmp_seq=1 ttl=64 time=1.36 ms
64 bytes from 192.168.0.27: icmp_seq=2 ttl=64 time=0.521 ms
64 bytes from 192.168.0.27: icmp_seq=3 ttl=64 time=0.353 ms
64 bytes from 192.168.0.27: icmp_seq=4 ttl=64 time=0.485 ms

它在 255.255.255.255 上写出广播 UDP 数据报。em1 上的主机地址是 192.168.0.200。velodyne 是 192.168.0.67

ifconfig -a
em1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.200  netmask 255.255.0.0  broadcast 192.168.255.255
        inet6 fe80::222:19ff:feab:d328  prefixlen 64  scopeid 0x20<link>
        ether 00:22:19:ab:d3:28  txqueuelen 1000  (Ethernet)
        RX packets 20457575  bytes 24210246456 (22.5 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 52  bytes 6272 (6.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

以下是路由表:

     route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         131.135.134.240 0.0.0.0         UG    0      0        0 em2
131.135.134.0   0.0.0.0         255.255.255.0   U     0      0        0 em2
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 em1
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 em2
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 em1
192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 em1

我启动了一个 C UDP 套接字,但它仍未连接

netstat -an | grep udp
udp        0      0 192.168.0.200:2368      0.0.0.0:*                          
udp        0      0 0.0.0.0:43329           0.0.0.0:*                          
udp        0      0 0.0.0.0:43348           0.0.0.0:*                          
udp        0      0 0.0.0.0:68              0.0.0.0:*  



ss -l | grep 2368
tcp    UNCONN     0      0        192.168.0.200:ipproto-2368               *:*    

以下是从 velodyne 的 IP/TCP/UDP 数据包中提取的标头:

Ethernet II, Src: Velodyne_20:13:62 (60:76:88:20:13:62), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
1   0.000000000 192.168.0.27    255.255.255.255 UDP 1248    Source port: opentable(2368) 
 Destination port: opentable (2368)

User Datagram Protocol, Src Port: opentable (2368), Dst Port: opentable (2368)

我做错了什么?同时启用 IPV4 和 IPV6 接口有关系吗?还有其他方法可以将主机添加到路由表吗?

答案1

我首先要检查的是,防火墙是否阻止了传入的 UDP 数据报。如果您可以在 Wireshark 中看到它们,但它们却无法到达应用程序,那么这很可能表明有东西阻止了它们。

如果不了解你的服务器的更多信息,很难确切地说出是什么导致了阻塞,但是作为一个 Fedora 系统,最有可能的是网络过滤器,它是 Linux 内核的一部分。

您可以使用(以 root 身份)检查入站连接的防火墙规则iptables -vL INPUT,也可以使用 Fedora 的 GUI 运行system-config-firewall以下命令查看详细信息:在 Fedora 文档中

如果您想向表中添加一条规则以允许此类流量进入您的系统,我会使用以下命令:

sudo iptables -t filter -A INPUT -i em1 -p udp --dport 2368 -j ACCEPT

答案2

解决了;

不确定是否是以下全部或部分;

我将 selinux 设置为最低;

我添加了您的 ACCEPT 规则,然后将此行添加到 iptables

iptables -t raw -I PREROUTING 1 -p udp --dport 2368 -j NOTRACK

并且我卸载了netfilter_conntrack。

看来 libnfnet_conntrack 和 kmod nf_conntrack 是问题的一部分,因为那是最后一个改变。

相关内容