Centos

無法通過工作 VPN 連接到 CentOS 7/8 螢幕共享 (VNC)

  • August 6, 2020

和大多數人一樣,我們是WFH。通過聊天/電話解決問題變得越來越困難,因此我們希望使用與作業系統捆綁在一起的 CentOS“螢幕共享”功能,以允許支持人員連接到使用者電腦以幫助他們解決問題。支持人員還將使用內置客戶端vinagre選擇VNC為連接類型。

所有使用者都連接到配置為允許內部主機相互通信的 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

知道問題可能是什麼嗎?

檢查netstatfirewalld是正確的,但有一些提示:

  1. 禁用firewalld並不意味著您沒有設置任何防火牆,即netfilter可以通過iptablesand控制nftables,因此您可能也需要檢查一下。
   $ iptables -nL
   $ nft list tables
  1. 當您進行網路服務診斷時,請始終檢查 PID/程序名稱,即netstat -nltpss -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

PS:

我記得在某處讀到 tcp6 連接映射到 tcp4 連接,所以這應該不是問題。

它被稱為雙棧模式

引用自:https://serverfault.com/questions/1028547