我在一个(Raspbian) Debian Linux系统(4.19.75)上使用了几个PHP脚本(主要是通过CLI,有些通过nginx / php-fpm)。
我的脚本使用简单的TCP套接字和WebSockets相互通信。出于某种原因,Linux内核认为我试图淹没/拒绝我自己的机器。
Jan 17 02:07:26 luna kernel: [10617.487372] TCP: request_sock_TCP: Possible SYN flooding on port 1337. Sending cookies. Check SNMP counters.
Jan 17 14:31:22 luna kernel: [55253.978408] TCP: request_sock_TCP: Possible SYN flooding on port 1337. Sending cookies. Check SNMP counters.
Jan 17 14:31:23 luna kernel: [55254.164176] TCP: request_sock_TCP: Possible SYN flooding on port 2346. Sending cookies. Check SNMP counters.
Jan 17 17:24:09 luna kernel: [65620.070514] TCP: request_sock_TCP: Possible SYN flooding on port 1337. Dropping request. Check SNMP counters.无论sysctl-Config如何,禁用sysctl都会导致立即删除所有请求。
更改net.ipv4.tcp_max_syn_backlog = 65535也不起作用。
两年前我也遇到了同样的问题,但我不记得我是如何解决这个问题的。
是否有一种方法可以对至少所有从本地主机建立的连接进行白名单?还是让整个系统停用?(我知道这使得它很容易受到SYN攻击,但在这一点上,我希望有一个不安全但工作的系统.)
发布于 2020-01-18 00:00:24
问题(可能)是PHPs /listen的新默认值。不知怎么的,它似乎有一个新的默认值为零。
$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($this->socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($this->socket, TCP_HOST, TCP_PORT);
socket_listen($this->socket, 128); // SETTING BACKLOG = 128
socket_set_nonblock($this->socket);https://stackoverflow.com/questions/59791472
复制相似问题