如何使用netcat更改监听规则?

时间:2019-06-28 03:11:34

标签: linux networking netcat

我有一台具有类似规则的服务器,当我检查netstat -tulpn时:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -

这一直很好,因为我们使用的mysql数据库只需要本地访问,但是现在我也想远程连接到它。我需要我的netstat -tulpn像这样阅读:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      -

该如何更新?我一直在浏览nc,但似乎所有内容都只涉及第一次设置收听。每当我尝试分配新规则时,都会收到如下消息:

(base) ct@do-not-touch:/$ sudo nc -l 0.0.0.0 3306   
nc: Address already in use

如何将127.0.0.1:3306的规则更新为0.0.0.0:3306?我在这里完全不合时宜吗?

2 个答案:

答案 0 :(得分:0)

您不能*使两个进程监听相同的IP和端口。由于0.0.0.0表示侦听所有IP,因此如果该端口上的任何IP都绑定了任何内容,则无法绑定到该IP。停止在127.0.0.1:3306上侦听的现有进程,然后就可以在0.0.0.0:3306上开始侦听。

*:从技术上讲,确实存在一个名为SO_REUSEPORT的标志,并且在绑定之后进行分叉也可以使它执行该操作,但是在您所处的情况下都没有用。

答案 1 :(得分:0)

好吧,如果将来遇到这种情况,您已经杀死了使用任何端口的进程,但是首先您必须知道该端口。

sudo lsof -t -i:3306

然后kill加上任何ID。