VNC的服务端口为5900,新增一个连接" :1" ,则该连接端口为5900+1=5901。但是在只有一个公网地址的公司网络中,可能会有多台服务器需要用到VNC则5900系列端口会不够用。VNC的服务端口没有在其配置文件中,幸好,可以在其脚本中修改。
首先找到vncserver的脚本先修改服务端
[root@l~]# grep "59" /usr/bin/vncserver -n
21:# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
222:$vncPort = 5900 + $displayNumber;
374:# n is taken if something is listening on the VNC server port (5900+n) or the
393:# (5900+n) or the X server port (6000+n).
410: if (!bind(S, pack('S n x12', $AF_INET, 5900 + $n))) {
//可以看到该文件中只有222和410两行的5900数字是其作用的,其他均为注释
[root@l~]# vi /usr/bin/vncserver
//于是将这两行的5900替换为你想要的新端口,我这里改为17050
$vncPort = 17050 + $displayNumber;
.........
if (!bind(S, pack('S n x12', $AF_INET, 5900 + $n))) {
..........
[root@longzw ~]# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 17050 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 17051 -j ACCEPT
//开放防火墙,因为vnc用的了" :1"连接所以17051也要用到。这里我已经将公网地址的1705*都映射到此服务器上
//然后就是重启iptables生效
[root@longzw ~]# service iptables restart
iptables:清除防火墙规则:[确定]
iptables:将链设置为政策 ACCEPT:filter nat [确定]
iptables:正在卸载模块:[确定]
iptables:应用防火墙规则:[确定]
[root@longzw ~]# service vncserver restart
关闭 VNC 服务器:1:root [确定]
......
[确定]
[root@longzw ~]# netstat -tnl | grep 17051
tcp 0 0 0.0.0.0:17051 0.0.0.0:* LISTEN
//看下17051端口已起来了
此时在远端用vnc client软件(我的是vncviewer)输入ip:17051,这里" : "后面跟的是" :1 "的实际端口。
如果还是无法正常连接,还需要修改vnc client软件相对于的vnc server的配置。我用的realvnc的server在开始菜单中有"server 配置"的选项,把“连接”中的端口都修改为"17050"-即服务器端VNC的服务端口,因为连接过去时会自动加1。