阅读量:48
CentOS VNC网络配置要点
1. 端口规划与占用检查
VNC服务采用“5900+N”的端口规则(N为显示编号,如:1对应5901、:2对应5902),同时会占用6000+N(X协议)和5800+N(HTTP协议)端口。配置前需通过netstat -nltp | grep vnc确认端口未被其他服务占用,避免冲突。
2. 防火墙规则配置
若系统启用firewalld(CentOS 7及以上默认),需添加VNC端口规则:
sudo firewall-cmd --permanent --add-port=5901/tcp # 替换为实际端口(5900+N)
sudo firewall-cmd --reload
若使用iptables(CentOS 6或旧版本),需编辑/etc/sysconfig/iptables添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
重启iptables使规则生效:sudo service iptables restart。
3. SELinux上下文设置
若系统启用SELinux,需为VNC相关目录设置正确上下文,允许VNC访问用户桌面:
sudo chcon -Rt svirt_sandbox_file_t ~/.vnc
若仍无法连接,可通过audit2allow生成并安装自定义策略:
sudo ausearch -c 'vncserver' --raw | audit2allow -M my-vnc-server
sudo semodule -i my-vnc-server.pp
```。
### **4. VNC服务开机自启动**
创建systemd服务文件(如`/etc/systemd/system/vncserver@:1.service`),替换``为实际用户名,内容如下:
```ini
[Unit]
Description=Start TigerVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=
Group=
WorkingDirectory=/home/
PIDFile=/home//.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
执行以下命令启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1.service
sudo systemctl start vncserver@:1.service
```。
### **5. xstartup配置文件优化**
`~/.vnc/xstartup`是VNC启动图形界面的关键文件,需根据桌面环境调整:
- **GNOME桌面**:删除或注释`xterm`、`twm`行,添加`gnome-session &`;
- **XFCE桌面**(轻量级):添加`exec startxfce4`。
修改后需赋予执行权限:`chmod 777 ~/.vnc/xstartup`,避免连接黑屏。
### **6. SSH隧道加密(可选但推荐)**
为提升安全性,建议通过SSH隧道加密VNC流量,避免明文传输:
在客户端执行:
```bash
ssh -L 5901:localhost:5901 @
然后在VNC客户端连接localhost:1(显示号对应隧道端口),实现加密连接。
7. 网络连通性测试
配置完成后,通过telnet 或nc -zv 测试端口连通性,确保客户端能访问服务器端口。若连接失败,需检查防火墙、SELinux及服务状态。