注册。 Linux 中的防火墙

Reg. firewall in Linux

我有一个 java 程序在一系列端口上侦听来自 UDP 和 TCP 的数据包。我在那个 Linux 框上本地有一个脚本,它将阻止或取消阻止这些端口上的向内网络流量。这些脚本运行良好。但是,当我使用此脚本停止流量时,需要将近 40 分钟才能停止流量。直到那时我在

收到数据包
java.net.DatagramSocket.receive() and
java.net.Socket.getInputStream().read()

方法。 40 分钟后,交通停止。我不知道发生了什么。我期待传入的流量立即停止。 Linux 框中是否遗漏了任何配置?

udp 和 tcp 的套接字缓冲区大小为:

[root@APP ~]# cat /proc/sys/net/ipv4/udp_mem
6164448 8219264 12328896
[root@APP ~]# cat /proc/sys/net/ipv4/udp_rmem_min
4096
[root@APP ~]# cat /proc/sys/net/ipv4/udp_wmem_min
4096

[root@APP ~]# cat /proc/sys/net/ipv4/tcp_mem
6164448 8219264 12328896
[root@APP ~]# cat /proc/sys/net/ipv4/tcp_rmem
4096    87380   4194304
[root@APP ~]# cat /proc/sys/net/ipv4/tcp_wmem
4096    16384   4194304

这是 iptables 脚本的片段。我对 5000 到 5100 之间的端口感兴趣。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [218796:15563881]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 5000:5100 -j DROP
-A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 4814 -j DROP
-A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 8000 -j DROP
-A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 4815 -j DROP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED --sport 587 -j ACCEPT
-A INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 2814 -j ACCEPT

-A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT
-A INPUT -p udp --dport 5000:5100 -j DROP
-A INPUT -p udp --dport 4814 -j DROP

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 587 -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 5000:5100 -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 4814 -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 4815 -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 2814 -j ACCEPT

-A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
-A OUTPUT -p udp --sport 5000:5100 -j ACCEPT
-A OUTPUT -p udp --sport 4814 -j ACCEPT

防火墙中的第一条规则告诉 iptables 接受所有已建立的连接,因此您只阻止新连接

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

尝试删除该规则,看看会发生什么