воскресенье, 26 августа 2012 г.

VNC Terminal Server на базе Debian Squeeze

Virtual Network Computing logo
Virtual Network Computing logo (Photo credit: Wikipedia)











Я думаю многие знают что такое Terminal Server и зачем он нужен, а кто не знает может сходить по ссылке и почитать WiKi.

Так же осмелюсь предположить что многие уже использовали VNC для однопользовательского подключения, но что можно сделать в случае если необходим многопользовательский доступ.

Я попробовал осуществить несколько вариантов, но остановился на запуске vnc4server через openbsd-inetd.

Кстати оговорю сразу, мы будем использовать порт 5901 поскольку дефолтовый порт занят встроенным в Gnome сервисом vino. Так же необходимо удалить network-manager, и настроить сетевые интерфейсы через старый добрый /etc/network/interfaces.
И последнее но не менее важное. Мы установим GDM вместо текущего GDM3 по причине того что последнего совершенно не впечатляют опции [xdmcp] Enable=true так необходимые для многопользовательского доступа.

Приступим



На стороне сервера 

Удалим всё ненужное, и установим всё необходимое.
apt-get purge network-manager network-manager-gnome -y
apt-get install vnc4server gdm openbsd-inetd openssh-server -y


Когда будете устанавливаться GDM его нужно будет выбрать оконным менеджером по умолчанию.

Теперь настроим openbsd-inetd
echo "5901 stream tcp nowait  nobody /usr/bin/Xvnc\
 Xvnc -inetd -query localhost -once -depth 24\
 securitytypes=none" >> /etc/inetd.conf
Поправим /etc/gdm/gdm.conf
sed -i -e 's/\[xdmcp\]/\[xdmcp\]\nEnable=true/g' /etc/gdm/gdm.conf
И перезапустим сервисы
/etc/init.d/openbsd-inetd restart
 Restarting internet superserver: inetd.
/etc/init.d/gdm restart
 Stopping GNOME Display Manager: gdm.
 Starting GNOME Display Manager: gdm.
Если вы будете использовать сервер в локальной сети может перейти к пункту настройки на стороне клиента, если же необходим доступ через Internet, то идём настраивать фаервол.

Настройка фаервола для случаев доступа через ssh туннель
cat > /etc/network/if-pre-up.d/iptables <<EOF 
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
EOF

chmod +x /etc/network/if-pre-up.d/iptables

cat > /etc/iptables.up.rules <<EOF 
*filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows SSH connections 
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT
EOF

/etc/init.d/networking restart

На стороне клиента 

Поставим клиентское ПО
apt-get install vncviewer openssh-client -y
Если вы в локальной сети то можете смело цепляться только что установленным клиентом, или воспользоваться любым другим.
vncviewer Terminal-Server:5901
Если вы решили работать через SSH туннель тогда прокинем  порт удалённого сервера на locslhost.
ssh -L 5901:localhost:5901 -N -f user1@Terminal-Server
И подключимся к нему.
vncviewer localhost:5901
После подключения вы должны увидеть окно входа в систему.
А после второго подключения еще одно. =))
Enhanced by Zemanta