小弟请教一个问题,Linux 中本机和本机通信数据包是不是不经过防火墙?
感谢各位大佬!!
1
chuckzhou 2023-07-12 11:53:14 +08:00
要过。本机通讯使用的是虚拟网卡 `lo`
|
2
Worldispow 2023-07-12 12:27:42 +08:00 via Android
走 socket 的应该不用,不知道这个算不算通信。。
|
3
chesha1 2023-07-12 12:42:28 +08:00 1
不一定对的答案:
如果你用的是 Berkeley socket ,本机通信和跨机通信是一样的,都要完整的走网络协议,需要经过防火墙,只是走本机会去虚拟的 Loopback ,在内核态的操作也比跨级通信简单一点 如果是 Unix domain socket ,不需要走任何网络协议,不走防火墙 |
4
zzboat0422 2023-07-12 12:43:21 +08:00 1
如果是 TCP/IP 的包,还是要经过 kernel 的三表五链的,所以会被防火墙影响到。
|
5
Danswerme 2023-07-12 12:58:35 +08:00
@chesha1 请教一下 mysql 的 socket 例如 /var/run/mysqld/mysqld.sock 是属于 Unix domain socket 吗? Berkeley socket 的应用场景有哪些呢?
|
6
chesha1 2023-07-12 13:17:00 +08:00
@Danswerme mysql 这个我不太清楚,不好意思
Berkeley socket 就是我们最常用的那个网络 socket 啊,最常见应用场景就是做 tcp 通信 |
7
Danswerme 2023-07-12 13:44:24 +08:00
@chesha1 谢谢,找了一下资料 Unix socket 主要用于本机不同进程之间的通信,MySQL 的 socket 应该也是这种类型;是我混淆了,我一直以为通常使用的网络通讯 Socket 是 Unix Socket 。
|
8
mingtdlb OP @chuckzhou @zzboat0422 过的话,受防火墙规则限制么?
我试了一下,好像不受限制 ``` [root@t-38-191 ~]# ss -lnt | grep 8989 LISTEN 0 128 *:8989 *:* [root@t-38-191 ~]# [root@t-38-191 ~]# iptables -nvL | grep 8989 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8989 [root@t-38-191 ~]# [root@t-38-191 ~]# curl 10.17.38.191:8989 10.17.38.191 [root@t-38-191 ~]# curl 127.0.0.1:8989 10.17.38.191 [root@t-38-191 ~]# ``` |
10
julyclyde 2023-07-12 18:15:06 +08:00
这种问法体现了一种不正确的思维方式,就是“特例”
不过在这个问题上其实特例是由防火墙上的一条规则来实现的,而不是防火墙本身无视了本地通信 |
11
mingtdlb OP @chuckzhou
```sh [root@t-38-191 ~]# iptables -L INPUT -v -n Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 72245 62M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 8 480 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 35724 62M INPUT_direct all -- * * 0.0.0.0/0 0.0.0.0/0 35724 62M INPUT_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0 35724 62M INPUT_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID 35701 62M REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8989 [root@t-38-191 ~]# [root@t-38-191 ~]# ss -lnt | grep 8989 LISTEN 0 128 *:8989 *:* [root@t-38-191 ~]# [root@t-38-191 ~]# curl localhost:8989 10.17.38.191 [root@t-38-191 ~]# [root@t-38-191 ~]# curl 127.0.0.1:8989 10.17.38.191 [root@t-38-191 ~]# [root@t-38-191 ~]# curl 10.17.38.191:8989 10.17.38.191 [root@t-38-191 ~]# ``` |
12
chuckzhou 2023-07-13 09:35:47 +08:00
|