和大多数人一样,我们也是在家办公。通过聊天/电话解决问题变得越来越困难,因此我们希望使用随操作系统捆绑的 CentOS“屏幕共享”功能,让支持人员能够连接到用户机器以协助解决问题。支持人员还将使用内置客户端vinagre
并VNC
选择连接类型。
所有用户都连接到 VPN,该 VPN 配置为允许内部主机相互通信。我们可以 ping 其他主机、查看它们正在运行的服务等。这是我的机器的屏幕共享设置。
当我查看 netstat 时,我看到端口5900
正在监听tcp6
。我认为问题是当每个主机 IPv4 接口都设置为默认连接时,底层 VNC 服务器正在监听 IPv6,但我记得在某处读到过tcp6
连接映射到tcp4
连接,所以这应该不是问题。这是我的 netstat 输出:
$ sudo netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:10391 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:29754 0.0.0.0:* LISTEN
tcp6 0 0 :::5355 :::* LISTEN
tcp6 0 0 :::5900 :::* LISTEN
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 :::9090 :::* LISTEN
我认为是防火墙的问题,但我的机器和客户端机器都已firewalld
禁用。
nmcli
以下是显示设置的输出Wired Connection 1
enp57s0u1: connected to Wired connection 1
"Realtek RTL8153"
ethernet (r8152), 8C:04:BA:67:52:16, hw, mtu 1500
ip4 default
inet4 192.168.1.123/24
route4 0.0.0.0/0
route4 192.168.1.0/24
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64
route6 fe80::/64
route6 ff00::/8
最后,我测试了启用 SSH,它成功了。用户能够连接并被提示进行身份验证(我们并没有让他们真正登录)。这让我相信这是底层 VNC 服务器本身的问题,可能与它在上面的监听有关tcp6
?
知道可能是什么问题吗?
答案1
检查netstat
和firewalld
是正确的,但有几点提示:
- 禁用
firewalld
并不意味着你没有设置任何防火墙,即netfilter
iptables
可以由和控制nftables
,因此您可能也需要检查这一点。
$ iptables -nL
$ nft list tables
- 在进行网络服务诊断时,请务必检查 PID/进程名称,即
netstat -nltp
或ss -nltp
。当出现问题时,您始终可以检查所述服务的日志和配置。
如果你可以添加 iptables 命令以允许 5900
应该是这样的
$ iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5900 -j ACCEPT
$ iptables -A INPUT -p udp -m state --state NEW -m udp --dport 5900 -j ACCEPT
如果你正在使用nftables
,你可以做类似的事情
$ nft add table inet t_gnome_vnc
$ nft add chain inet t_gnome_vnc c_input
$ nft add rule inet t_gnome_vnc c_input tcp dport 5900 accept
$ nft add rule inet t_gnome_vnc c_input udp dport 5900 accept
附言:
我记得在某处读到过 tcp6 连接映射到 tcp4 连接,所以这应该不是什么问题。
它被称为双栈模式。