nginx转发的包 在内核协议栈消失了??!!!!!(人快奔溃了..
我是在openwrt上做的开发,linux 内核是2.6.32问题就是经过路由器上的nginx转发的包 完全消失了.....
这是路由器的网络环境.
br-lan 是lan口, eth0.2是wan口.
lan地址为192.168.11.1
WAN地址为 192.168.100.23
我主机连上lan口 通过路由器上网
-A PREROUTING ! -d 192.168.0.0/16 -i br-lan -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.11.1:81
以上这条规则把 本机对外网的 目的端口是80的 tcp的包转发给路由器的lan口. nginx监听80口.
奇怪的就是经过nginx转发的 在lan口 POST_ROUTING以及 wan口的POST_ROUTING完全的消失了.
我注册的netfilter节点收不到包.优先级已经是最高.
更加诡异的情况出现了....我在iptables命令里的nat mangle 2个表里 的 最后位置 加上对应的post_routing打印日志命令,都收的到 被nginx 转发的包.全部都能打印出来.
打印命令如下
-A POSTROUTING -p tcp -o eth0.2 -j LOG --log-ip-options --log-prefix "POST " -A PREROUTING ! -d 192.168.0.0/16 -i br-lan -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.11.1:81
这条规则去掉 就好了也就是不让nginx转发了
我甚至把netfilter注册到网桥了,lan口4个口都是网桥了还是一样的问题...简直无语了...
网桥不是链路层了吗这还收不到?
iptables命令为何收的到?iptables不是工作在ip层了??..
个人感觉我的世界的真理已经颠覆了.. 捉急啊求大神指教啊 回复 3# q198816
nat POSTROUTING/PREROUTING 是对连接的第一个数据包处理,之后的数据包都走conntrack了,不会再走nat表了
但是我在post_routing的节点注册的函数优先级是FIRST 就是最大负数了.为何还是收不到包.优先级比conntrack大多了啊 我注册的netfilter应该不在nat表里吧 我注册的netfilter应该不在nat表里吧
页:
[1]