我有问题搞清楚我configuration错了什么。 我无法将数据包从velodyne传回带有2个eth接口em1和em2的Fedora服务器。 我有velodyne连接到em1主机与eth电缆主机。
我知道velodyne在2368抽出UDP数据包,我可以在wireshark上看到它们。 我知道velodyne是反应,因为它响应平:
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接口吗? 有另一种方式添加主机到路由表?
我要检查的第一件事是你没有防火墙阻塞传入的UDP数据报。 如果你能在Wireshark中看到它们,但是它们没有通过应用程序,那么这将是一个很好的指示,说明有什么东西阻塞了它们。
在不了解服务器的情况下,很难说阻塞是什么,但作为一个Fedora系统,最有可能的是netfilter ,它是Linux内核的一部分。
您可以使用iptables -vL INPUT (以root身份)检查入站连接的防火墙规则,或者您可以通过运行system-config-firewall来使用Fedora的GUI,详情请参阅fedora文档 。
如果你想添加一个规则到表中,以允许这种types的stream量进入你的系统,我会使用这个命令:
sudo iptables -t filter -A INPUT -i em1 -p udp --dport 2368 -j ACCEPT
解决了;
不确定是否全部或部分以下;
我把selinux设置为最小化;
我添加了你的ACCEPT规则,然后我把这一行添加到iptables
iptables -t raw -I PREROUTING 1 -p udp --dport 2368 -j NOTRACK
我卸载了netfilter_conntrack。
似乎libnfnet_conntrack kmod nf_conntrack是问题的一部分,因为这是最后的变化。