Автор Тема: Линукс Терминал (школьный): как сделать....  (Прочитано 9545 раз)

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
Сразу скажу что на моей системе все поставилось и запустилось почти без проблем, пришлось лишь слегка пошаманить на  материнке (Gigabyte DS-P35-DS3R) с типами жестких  дисков (при наличии в биосе активной опции SATA RAID,  на IDE диске, расположенном на вспомогательном контроллере, не прописывался начальный загрузчик).

Терминал(ноутбук Asus A3Fc) также с полтычка загрузился по PXE. То есть "из-каропки" все работает как и задумывалось разработчиком. А вот в процессе доводки системы под свои задачи появились некоторые вопросы.

1) По условиям моей задачи, необходимо иметь 4 терминала, на каждом из которых запускается каждый раз новая, девственно чистая сессия. То есть поработал человек, вышел, и при следующем запуске он должен получить "чистый"  нетронутый комп. 
Насколько я понимаю расклад, это сделать не сложно. Необходимо лишь из стартовых скриптов сессии потереть все содержимое  /home/user ?
Вопроc: Откуда это лучше всего сделать?

2) Люди работающие за соседними терминалами не должны видеть друг друга. Это приводит нас к необходимости создавать как минимум 4 разных пользователей, иначе они поделят в Линукс-Терминал один рабочий стол.

Вопрос: Существует ли какой либо  способ автоматически логинить каждый конкретный терминал в заведенного специально для него пользователя? Например терминал с MAC адресом сетевой карты xxx-xxxx-xxx1  логинится как пользователь user1, а терминал с MAC xxx-xxxx-xxx2 входит как user2, ну и так далее. 

3) Существует ли какой либо способ "подсмотреть" на сервере что делают юзеры на терминалах? Ну, типа,  запускается на сервере окошко, в котором мы видим "рабочий стол" запущенный у юзера, примерно так, как это  делает VNC. В идеале хорошо бы иметь возможность и управлять этим рабочим столом на манер VNC (помогать юзеру решать его задачи, тыкая за него мышкой).


 

« Последнее редактирование: 22.04.2009 01:38:00 от German_Ivanov »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
1. Смотрите в сторону kiosk от KDE
2, 3 Не знаю.
 

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 169
    • Домашняя страница
С такими вопросами лучше обратиться в рассылку https://lists.altlinux.org/mailman/listinfo/ltsp-server
Андрей Черепанов (cas@)

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
С такими вопросами лучше обратиться в рассылку https://lists.altlinux.org/mailman/listinfo/ltsp-server
Спасибо, обратился.  Пока там народ думает, :) частично разобрался с вопросом номер 3.

Ответ: Вы можете увидеть экран подключеного к терминалу пользователя  с помощью krdc. Выбираем "выполнить программу", вбиваем  krdc. В появившемся окне набираем в поле "удаленная система" следующий  адрес  vnc://linux.local:5901  жмете  кнопку "соединиться",  появляется окошко с бегущим прогрессбаром. Прогресс бар застревает на стадии авторизации. В это время у юзера на дектопе выскакивает окошко с предупреждением о коннекте. Если он вас авторизует - вы подключитесь к его рабочему столу.

ps: если вам нужен второй терминал - его адрес будет vnc://linux.local:5902 ну и так далее...

Вопрос: как избавиться от авторизации??? Хочу коннектится к юзеру не спрашивая его разрешения :)

 

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 169
    • Домашняя страница
Вопрос: как избавиться от авторизации??? Хочу коннектится к юзеру не спрашивая его разрешения :)
Смотрите параметры настройки krfb: Настроить — Безопасность — Разрешать соединения без приглашений.
Андрей Черепанов (cas@)

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
Смотрите параметры настройки krfb:

Спасибо, разобрался  - все получилось. Также через kiosk настроил  клиентов. Теперь настала очередь сквада. :) В соседней ветке нашел вот такой совет

Готовый конфиг сквида и инит-скрипт NAT:
http://fly.osdn.org.ua/~drool/nat_squid.tar.bz2
Только свои IP и сетевуху подставить.

А как должны выглядеть  эти адреса в случае терминального сервера? Напомню на всякий случай всем заглянувшим в эту ветку форума тамошний расклад:

1) Мы имеем физический интерфейс eth0 к которому коннектятся терминальные клиенты.
В /etc/net/ifaces/eth0/ipv4address  интерфейсу присвоен адрес 192.168.0.1/24

2) Также мы имеем еще один физический интерфейс называщийся eth1. Он смотрит в интернет и получает адрес от внешнего dhcp сервера. Если это сложно в настройке, то можно обойтись без dhcp и сразу присвоить ему фиксированный адрес в том сегменте сети, скажем 192.168.1.2/24 

Как в таком случае следует распределить адреса в следующей строчке настроек iptables  файла nat рекомендумого пакета? Вот так?

 
iptables -I PREROUTING -t nat -s 192.168.0.1/24 -p tcp --dport 80 -j DNAT --to 192.168.0.1:3128 \
         && iptables -I PREROUTING -t nat -s 192.168.0.1/24 -p tcp --dport 80 -j DNAT --to 192.168.0.1:3128 \
         && echo 1 > /proc/sys/net/ipv4/ip_forward \
         && iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -o eth0 -j MASQUERADE \


То есть все запросы на 80 порт 192.168.0.1/24 (eth0) переадресовываются на 3128 порт его же? Или тут нужно перехватывать запросы уже на  "выходной" интерфейс  eth1 и  переправлять все --to  на 192.168.1.2/24   ?


ps: что то рассылка никак не реагирует... :(



« Последнее редактирование: 05.05.2009 00:04:52 от German_Ivanov »

Drool

  • Гость
Как в таком случае следует распределить адреса в следующей строчке настроек iptables  файла nat рекомендумого пакета? Вот так?

iptables -I PREROUTING -t nat -s 192.168.0.1/24 -p tcp --dport 80 -j DNAT --to 192.168.0.1:3128 \
&& iptables -I PREROUTING -t nat -s 192.168.0.1/24 -p tcp --dport 80 -j DNAT --to 192.168.0.1:3128 \
&& echo 1 > /proc/sys/net/ipv4/ip_forward \
&& iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -o eth0 -j MASQUERADE \

То есть все запросы на 80 порт 192.168.0.1/24 (eth0) переадресовываются на 3128 порт его же? Или тут нужно перехватывать запросы уже на  "выходной" интерфейс  eth1 и  переправлять все --to  на 192.168.1.2/24   ?

192.168.0.1/24 заменить на 192.168.0.0/24, иначе доступ к инету будет только с адреса 192.168.0.1; eth0 заменить на тот интерфейс, который смотрит в инет - eth1.
Вообще-то, все-равно куда перебрасывать - на 192.168.1.2 или на 192.168.0.1, просто второй как бы "ближе" к клиентам :)

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
eth0 заменить на тот интерфейс, который смотрит в инет - eth1.
Вообще-то, все-равно куда перебрасывать - на 192.168.1.2 или на 192.168.0.1, просто второй как бы "ближе" к клиентам :)

Спасибо за оперативный ответ.  А если мы прокинем клиентов сразу в инет(eth1), они не потеряют при этом возможность коннектится к самой терминальной машине? Это к тому что ней в дальнейшем планируется подъем веб-сервера.


 

Drool

  • Гость
А если мы прокинем клиентов сразу в инет(eth1), они не потеряют при этом возможность коннектится к самой терминальной машине? Это к тому что ней в дальнейшем планируется подъем веб-сервера.

Нет, конечно. Ведь ее IP из сети никуда не денется.
Кстати, советую, кроме squid+nat, установить и chkconfig bind on - тогда для клиентов эта машина указывается как шлюз, так и DNS-сервер, что есть немного удобно, т.к. бывает что провайдерский DNS шалит.
« Последнее редактирование: 05.05.2009 00:51:05 от Drool »

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
Кстати, советую, кроме squid+nat, установить и chkconfig bind on - тогда для клиентов эта машина указывается как шлюз, так и DNS-сервер, что есть немного удобно, т.к. бывает что провайдерский DNS шалит.

ага, спасибо за совет, да кстати,  я правильно понял что скрипт nat необходимо просто бросить в папку к остальным скриптам?  нигде  больше его прописывать не надо?


Drool

  • Гость
я правильно понял что скрипт nat необходимо просто бросить в папку к остальным скриптам?  нигде  больше его прописывать не надо?

Да, его просто нужно положить в /etc/rc.d/init.d/, ну а дальше уже как обычно - chkconfig nat on и service nat start/stop/list.

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
ну а дальше уже как обычно - chkconfig nat on и service nat start/stop/list.

Как выяснилось в процессе опытов все и проще и сложнее одновременно. :)  Скрипт NAT-а работает на ура... при условии что я подключаю к eth0, скажем, внешнюю машинку с виндой или линуксом. Но в моей ситуации (Терминал-Сервер). Клиент как бы уже в системе. Если спросить у клиента ifconfig  он расскажет про основной комп, а не про себя. То-есть, грубо говоря, клиент это как бы уже сервер. :)
В связи с чем возникает вопрос, а как бы мне "завернуть" весь трафик сервера на сквад? Пробовал прописывать его в транспарент ном режиме и на eth0 и на eth1 - нифига не работает. Если прописать прокси в самом фаерфоксе  - срабатывает отлично но мне хотелось бы транспарентный режим.



На всякий случай вот значимые секции конфига сквада

http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 8 MB
access_log /var/log/squid/access.log squid
url_rewrite_program /usr/sbin/redirector /etc/squid/redirector/redirector.conf
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl our_networks src 192.168.0.0/24


acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl Rsync_ports port 873
acl Jabber_ports port 5222 5223
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 563 # snews
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl CONNECT method CONNECT

http_access allow manager
http_access allow localhost

http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports !Jabber_ports !Rsync_ports

http_access allow our_networks

#http_reply_access allow all
http_access deny all

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
В связи с чем возникает вопрос, а как бы мне "завернуть" весь трафик сервера на сквад? Пробовал прописывать его в транспарент ном режиме и на eth0 и на eth1 - нифига не работает. Если прописать прокси в самом фаерфоксе  - срабатывает отлично но мне хотелось бы транспарентный режим.

похоже я что то не то,или не так, спросил :(  Переформулирую:

Локальный сквад возможно включить в транспарентный режим, или эта функция почему-то не работает на терминал-сервере?

1) Я подключаю ноут к eth0, загружаю на нем windows, запускаю браузер - сквад работает.
2) Перезагружаю ноут, гружусь по сети в терминального клиента - сквад не работает(запросы идут мимо него).
3) запускаю браузер на самом терминал-сервере - сквад не работает(запросы идут мимо него).
4) Прописываю прокси в настройках браузера  ( на 192.168.1.0:3128) - сквад работает.



« Последнее редактирование: 06.05.2009 12:01:22 от German_Ivanov »

Drool

  • Гость
Локальный сквад невозможно включить в транспарентный режим, или эта функция почему-то не работает на терминал-сервере?

Заворачивать локальный траффик на сквид не пробовали? Что-то типа как Вы пытались первый раз.

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
Заворачивать локальный траффик на сквид не пробовали? Что-то типа как Вы пытались первый раз.

пробовал (и IP eth0 и ip eth1). не cработало.   Возможно что то не так делал. сейчас как раз с этим ковыряюсь.