- 主题:一个诡异的问题跟大家讨论下
请看我的nftables如下
# Warning: table ip6 filter is managed by iptables-nft, do not touch!
table ip6 filter {
chain INPUT {
type filter hook input priority filter; policy accept;
udp sport 5887 udp dport 5888 counter packets 4 bytes 3136 accept
}
chain FORWARD {
type filter hook forward priority filter; policy accept;
tcp flags syn / syn,rst counter packets 0 bytes 0 tcp option maxseg size set rt mtu
tcp flags syn / syn,rst counter packets 0 bytes 0 tcp option maxseg size set rt mtu
}
chain OUTPUT {
type filter hook output priority filter; policy accept;
}
}
注意INPUT Chain里的第二条UDP规则,counter显示通过了4个包,诡异的地方在于,
我写了个简单程序监听UDP 5888端口,结果啥也没收到,这包有可能是在什么地方
被抛弃了呢?
--
FROM 61.48.18.52
我的监听程序是没有问题的,用nc监听也是同样的效果。
事情起因是这样的,我写了个ebpf tc的程序,把一台机器发往UDP 5888端口
的包给加上了个TCP头,在接受测用另一个epbf tc程序把这个TCP都去掉。这
一套操作在IPv4上是成功的,接收侧用nc监听能正常收到UDP包。我现在想
把这一套用在IPv6上,但是接收侧就发生了第一贴这一幕,UDP包应用层死活
收不到。
【 在 DreamDreams 的大作中提到: 】
: 标 题: 一个诡异的问题跟大家讨论下
: 发信站: 水木社区 (Sat Mar 18 17:04:47 2023), 转信
:
: 请看我的nftables如下
: # Warning: table ip6 filter is managed by iptables-nft, do not touch!
: table ip6 filter {
: chain INPUT {
: type filter hook input priority filter; policy accept;
: udp sport 5887 udp dport 5888 counter packets 4 bytes 3136 accept
: }
:
: chain FORWARD {
: type filter hook forward priority filter; policy accept;
: tcp flags syn / syn,rst counter packets 0 bytes 0 tcp option maxseg size set rt mtu
: tcp flags syn / syn,rst counter packets 0 bytes 0 tcp option maxseg size set rt mtu
: }
:
: chain OUTPUT {
: type filter hook output priority filter; policy accept;
: }
: }
: 注意INPUT Chain里的第二条UDP规则,counter显示通过了4个包,诡异的地方在于,
: 我写了个简单程序监听UDP 5888端口,结果啥也没收到,这包有可能是在什么地方
: 被抛弃了呢?
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 61.48.18.52]
--
FROM 61.48.18.52
这个问题我用dropwatch/dwdump算是初步解决了,
找到了kernel在什么地方把我的包给drop掉了,是__udp6_lib_rcv
我猜是因为checksum错误,不过为啥会有错误为啥有错误会drop
这个还有待进一步研究,不过确实可能UDP这里v4/v6处理不一样,
否则也不会有专门的udp6_xxx的函数了。而我这个问题恰恰是v4没问题
v6有问题。
ChatGPT在过程中帮了忙,虽然不那么直接,但是发散思维找找思路
还是相当的厉害,比在网上到处问省心。
【 在 DreamDreams 的大作中提到: 】
: 标 题: Re: 一个诡异的问题跟大家讨论下
: 发信站: 水木社区 (Sat Mar 18 17:09:03 2023), 转信
:
: 我的监听程序是没有问题的,用nc监听也是同样的效果。
:
: 事情起因是这样的,我写了个ebpf tc的程序,把一台机器发往UDP 5888端口
: 的包给加上了个TCP头,在接受测用另一个epbf tc程序把这个TCP都去掉。这
: 一套操作在IPv4上是成功的,接收侧用nc监听能正常收到UDP包。我现在想
: 把这一套用在IPv6上,但是接收侧就发生了第一贴这一幕,UDP包应用层死活
: 收不到。
:
: 【 在 DreamDreams 的大作中提到: 】
: : 标 题: 一个诡异的问题跟大家讨论下
: : 发信站: 水木社区 (Sat Mar 18 17:04:47 2023), 转信
: :
: : 请看我的nftables如下
: : # Warning: table ip6 filter is managed by iptables-nft, do not touch!
: : table ip6 filter {
: : chain INPUT {
: : type filter hook input priority filter; policy accept;
: : udp sport 5887 udp dport 5888 counter packets 4 bytes 3136 accept
: : }
: :
: : chain FORWARD {
: : type filter hook forward priority filter; policy accept;
: : tcp flags syn / syn,rst counter packets 0 bytes 0 tcp option maxseg size set rt mtu
: : tcp flags syn / syn,rst counter packets 0 bytes 0 tcp option maxseg size set rt mtu
: : }
: :
: : chain OUTPUT {
: : type filter hook output priority filter; policy accept;
: : }
: : }
: : 注意INPUT Chain里的第二条UDP规则,counter显示通过了4个包,诡异的地方在于,
: : 我写了个简单程序监听UDP 5888端口,结果啥也没收到,这包有可能是在什么地方
: : 被抛弃了呢?
: :
: : --
: :
: : ※ 来源:·水木社区 mysmth.net·[FROM: 61.48.18.52]
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 61.48.18.52]
--
FROM 124.207.188.194