Показаны сообщения с ярлыком internet. Показать все сообщения
Показаны сообщения с ярлыком internet. Показать все сообщения

четверг, 11 марта 2010 г.

Не помню, жаловался ли..

пожалуюсь значит: с каких-то пор иногда не могу попасть домой в компьютер с работы; при этом как показывает осмотр компьютера дома он жив-здоров, интернет есть – но в dyndns не обновился по какой-то причине мой ip-адрес, который иногда имеет привычку меняться провайдером

Я почитал 3 минуты про cron и нашарашил скриптик, который запускает inadyn (это клиент dyndns для синхронизации ip-адреса и доменного имени), ждет 10 секунд и убивает его. Положил скриптик в /etc/cron.hourly и типа справился – все, что лежит в этой папочку, автоматично запускается (как следует из названия) каждый час

Порадовался со своей находчивости, радовался ровно день – сегодня пришло письмо от dyndns, меня забанили за периодичное обновление (их клиент тоже периодически проверяет, не поменялся ли ip-адрес, но он то обновляет его только если адрес поменялся, а не каждый час).. Правда пожурили мягко – дали ссылку на страничку разблокирования, чтобы я все устранил и снова все включил

Так что пришлось поспрашивать тут нашего линух-гуру, в результате чего имеем, что имеем: в /etc/cron-hourly лежит скрипт update_name (набранный в pico текстовый файл, который потом сделан исполнимым:

   1: sudo pico /etc/cron.hourly/update_name
   2: // .. набираем текст ..
   3: sudo chmod +x /etc/cron.hourly/update_name

А в файл написал следующее: “проверить список запущенных программ, и если моя программа там есть, то выйти; но если ее нет, то запустить”:

   1: #!/bin/bash
   2: ps -e|grep inadyn > /dev/null && exit
   3: inadyn

Файлик этот, лёжа в cron.hourly, будет запускаться ежечасно, но запускаться будет только если клиент по какой-то причине отключился.. Посмотрю, как работать будет :)

Upd: похоже что работает; по крайней мере с тех пор проблем не замечал..

понедельник, 26 октября 2009 г.

Перестановки...

Переустановил дома "сервер".. Шо характерно - пользовался своими мануалами, из-за специфики уложенных в плинтусы проводов часть установки выглядела комично - в кладовке сверху системника стоял монитор, я сидел в коридоре (потому что места там уже не оставалось) и с iPod-а читал инструкции :)

Кстати затупил.. с нетбука было бы удобнее, все же экран побольше

Результатом недоволен :(

Кстати начал перестановки из-за добавления жесткого диска; вот кстати пикчуры моей чудо конструкции:

четверг, 16 июля 2009 г.

Домашний сервер (10): gallery

В домашней сети теперь есть емкое и 24/7 доступное хранилище для разного барахла; есть смысл хранить тут среди прочего и свои фото, цифровые фотоаппараты сейчас наверное у всех есть Можно выделить папочку для хранения фото, назначить ответственного пользователя для доступа read\write в эту папку, организовать структуру хранения и заливать фото с использованием пикасы, лайтрума или в конце-концов средств самой виндовс Но показать гостям “а вот мы были недавно на море” понятно как, сели за комп, папку открыли и смотрим; а как быть с друзьями/родственниками “удаленными” – глобализация поразбрасывала нас не только по микрорайонам, но и по городам/странам; как поделится с ними? Кроме онлайновых сервисов (та же пикаса) можно сделать альбом и у себя в компьютере – с помощью бесплатной gallery Установка как всегда проста (можно пойти и сложным путем, скачав файлы из svn или в архиве, только зачем?):
sudo apt-get install gallery2 
Естественно веб-сервер, sql-сервер должны быть установлены, при установке установщик спросит имя/пароль для sql-сервера (они задавались при установке sql – например при установке webmin.. кажется..), в конце предложит перезапустить веб-сервер Кстати, про веб-сервер: после его установки и запуска открыв в бровзере страничку типа http://192.168.5.1/ увидим что-то типа “It’s work!”, что не очень солидно ;) Этот текст выводится потому, что в /var/www лежит файлик index.html; безболезненно удалим этот файлик; после чего может оказаться, что после захода по этому адресу увидим список папок на нашем веб-сервере – это еще более неправильно, отключается это в файле /etc/apache2/site-available/defaults (это скорее всего неправильно делать в этом файле, но у меня частный маленький серверок и я делаю не столько как правильно, сколько как удобно): в этом файле надо сделать примерно такие изменения:
<Directory /var/www/>
        Options -Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
</Directory>
Опция –Indexes как раз должна запрещать показ листинга каталога, если нет .html или .php файла по умолчанию (вообще я настраивал это у себя методом тыка, так что уже не помню точно – но кажется именно эта опция сработала) Раз мы уже в этом файле, то настроим и галерею - добавляем сюда секцию (например сразу после той, что правили):
Alias /gallery2 /usr/share/gallery2
<Directory /usr/share/gallery2>
        AllowOverride Limit Options FileInfo
        Options FollowSymlinks
</Directory>
Создается перенаправление – когда у сервера спросят gallery2, он отдаст ссылку на каталог, куда установились файлы; если устанавливать вручную, скачивая файлы к себе на сервер, то можно сразу положить их в /var/www/gallery2 – тогда эти телодвижения и не нужны Это в общем-то все: вводим в бровзере http://192.168.5.1/gallery2 и видим: Все остальные настройки делаются уже в веб-интерфейсе, там несложно; хотя несколько раз попросят в консольке что-то поделать, например создать в папке gallery файлик с определенным текстом.. Папка gallery при установке apt-get-ом – это /usr/share/gallery2. Еще установщик спросит, где хранить фото; вот мое решение для этого: gallery предполагает, что я (и/или другие пользователи моей галереи) буду загружать файлы с помощью веб-интерфейса в папку, которую и предлагает указать. Но я свои фотографии загружаю другими способами, в папку /mnt/media/pictures и дальше по годам, причем уже выработана своя система, которая рано или поздно пересечется с gallery и вызовет бардак Поэтому я создал папку /mnt/media/pictures/albums, а при создании собственно альбомов, а точнее при наполнении их фотографиями я всегда ставлю “галочку” на опции “создавать симлинки”: т.е. я создаю альбом, наполняю его фото, но в соотв. папке появляются только ссылки на реальные фотографии; мою же структуру папок gallery никак не затрагивает Не скажу, что этот способ идеален, бОльшую часть наших фото (а это уже > 6 гигабайт) еще предстоит перенести и отсортировать Так что как и советует установщик, пишем в консоли:
cd /mnt/media
sudo mkdir pictures/albums
sudo chmod 755 pictures/albums
sudo chown www-data:www-data pictures/albums
после чего вводим созданный путь как путь для хранения Следующим шагом вводятся данные для sql-сервера, там надо всего лишь ввести пароль, который задавался при создании базы, на следующем шаге создали пользователя-администратора галереи (у меня он получил то же имя, что и основной пользователь шлюза.. несекурно, просто чтобы в паролях не путаться) На страничке выбора плагинов к галереи надо внимательно почитать, что стоит ставить, что нет, лишние имхо совсем ни к чему (к тому же плагин всегда можно убрать/добавить); я выбрал пока следующие: Album Select, Image Block, Add Items, Windows Publishing Wizard, Registration, URL Rewrite, Search, Dynamic Albums, Icons, ImageFrame, Keyword Albums, Slideshow, Square Thumbnails, Thumbnail Manager, Thumbnail Page, ImageMagick, Gd Еще несколько щелчков мышкой, и мы в галерее (пока пустой); надо войти с помощью созданного логина администратора и доработать напильником некоторые настройки (ImageMagic и UrlRewrite); сначала настроим ImageMagic – собственно его надо установить
sudo apt-get install imagemagick
а потом ввести в настройках gallery путь к бинарным файлам - /usr/bin С настройками UrlRewrite чуть дольше: сначала надо создать файлик .htaccess, а потом выбрать из 2-х вариантов (щелкая по соотв. ссылке) работающий:
sudo touch /usr/share/gallery2/.htaccess sudo chmod 666 /usr/share/gallery2/.htaccess 
После этого в списке плагинов не должно остаться ничего со значком ошибки, все или с зеленым значком “Ок”, или с красненьким – “не установлен” Все, можно идти заполнять альбомы..

среда, 15 июля 2009 г.

Настройка домашнего интернета (7): напильник и Shorewall, dhcp и прочие..

Нашел свой старый конфиг для shorewall; не скажу, что он идеальный, но должно быть как раз что-то такое..

В policy все просто, как в примере - все запрещено, ибо нефиг; а в rules понаписано такое:

# чтоб шлюз мог резолвить адреса на внешних серверах, а локальная сеть
# получать адреса у него
DNS/ACCEPT $FW net
DNS/ACCEPT loc $FW

# чтобы шлюз мог ходить в интернет
ACCEPT $FW net tcp www

# для удаленного доступа из локальной сети и из офиса (у него постоянный ip)
SSH/ACCEPT net:11.22.33.44 $FW
SSH/ACCEPT loc $FW

# в модеме закрыты все порты, кроме 60606 - для торентов
ACCEPT net $FW tcp 60606
ACCEPT net $FW udp 60606

# для "личных нужд" у меня есть свой svn
SVN/ACCEPT net:11.22.33.44 $FW

# разрешу доступ к своему веб-серверу только мне
# хотя позже я ослабил это правило, когда установил gallery
HTTP/ACCEPT net:11.22.33.44 $FW
HTTPS/ACCEPT net:11.22.33.44 $FW

# пинги (можно макросами, можно протоколами)
Ping/ACCEPT loc $FW
Ping/REJECT net $FW
ACCEPT $FW loc icmp
ACCEPT $FW net icmp

# для нормальной работы самбы надо открыть эти порты (еще раз - сейчас у меня в policy
# все запрещено - только loc -> net разрешено - так что все исключения надо перечислить)
ACCEPT loc $FW tcp 135
ACCEPT loc $FW udp 137
ACCEPT loc $FW udp 138
ACCEPT loc $FW tcp 139
ACCEPT loc $FW tcp 445
ACCEPT $FW loc udp 137
ACCEPT $FW loc udp 138

Хорошо бы, чтобы в сети надо было делать как можно меньше настроек; первый шаг к этому - установка своего dhcp-сервера: тогда клиентские компьютеры IP-адреса, сетевую маску, адреса шлюза по умолчанию и dns будут получать автоматически:

sudo apt-get install dhcp3-server
# надо настроить конфиг для dhcp-сервера
sudo pico /etc/default/dhcp3-server

# находим и меняем строку таким образом - указываем интерфейс локальной сети:
INTERFACES="eth1"

# настроим собственно параметры сервера
sudo pico /etc/dhcp3/dhcpd.conf

# можно посмотреть на пример, но остаться должно следующее:
# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ubuntu;

default-lease-time 600;
max-lease-time 7200;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

subnet 192.168.5.0 netmask 255.255.255.0 {
range 192.168.5.10 192.168.5.200;
option routers 192.168.5.1;
option domain-name-servers 192.168.5.1;
option broadcast-address 192.168.5.255;
}

# сохраняем и запускаем сервер
sudo /etc/init.d/dhcp3-server start

# открываем /etc/shorewall/interfaces и в опции того интерфейса,
# для которого создает адреса dhcp, добавляем dhcp (иначе shorewall
# заблокирует порты 67/68 и клиенты не смогут получить ip):
loc eth1 detect dhcp,tcpflags,nosmurfs

Проверим, все ли нормально - на windows-компьютере в свойствах сетевой карты указываем - получать адреса автоматически:

Перед этим я отключил сетевую карту - теперь включаю и вижу:

Видим, что от dhcp получен новый адрес (раньше руками был установлен 192.168.5.2, новый адрес - первый из пула - 192.168.5.10); интернет продолжает работать, т.е. и с dns все нормально

вторник, 14 июля 2009 г.

Настройка домашнего интернета (5)

Самое время отнести компьютер в кладовку :) дальше с ним работать можно будет удаленно Ну не прямо сейчас - настроим удаленный доступ.. аленный достп обзывается странными буквами ssh, смысл которых я опять таки не понимаю - главное, что оно работает, а мне больше не надо ;) sudo apt-get install ssh Установится целая куча дополнительных пакетов, нас это не волнует, нам надо слегка подправить /etc/ssh/sshd_config - в самый конец файла добавить строчку AllowUsers имя_пользователя PasswordAuthentication yes сохранить файл и перезагрузить службу - /etc/init.d/ssh restart Что теперь с этим делать? Теперь с любого компьютера локальной сети или интернета можно зайти в наш шлюз "по делам"; конечно из интернета это делается немного сложнее, но делается. Зайти с другой ubuntu-машины можно с использованием команды ssh; для windows тоже есть клиенты, лично я рекомендую Tunnelier; кроме того, что с его помощью можно получить удаленный доступ к консоли своего серера, так он еще и реализует sftp - "ftp over ssh", технологию для передачи файлов по ssh-соединению. После установки работает все очень просто - вводим в Host адрес нашего сервера, в Username вводим имя пользователя, в Initial method выбираем password, который вводим в поле ниже, ставим галку Store encripted password, чтобы не вбивать его каждый раз (это если есть доверие машине, с которой входим); жмем Login и если все нормально - получаем текстовую консоль и 2-хоконный менеджер файлов.. в консоль можно ввести screen -x и продолжить начатую ранее работу Вот теперь компьютер можно относить в кладовку :) Теперь про то, как же зайти удаленно в свой шлюз из интернета; ну вообще конечно сделать это можно не всегда, а только в случае, когда провайдер предоставляет реальные ip-адреса (т.е. между интернетом и сетью провайдера нет аналогичной нашей трансляции адресов, когда адрес внутри сети не существует за ее пределами) Так вот если адрес реальный (не обязательно статический - т.е. не меняющийся изо дня в день..), можно за даром для начала зарегистрироваться на сайте dyndns.com и получить там доменное имя типа my-superserver.dyndns.info... ну не очень благозвучно - но зато ж бесплатно! А после этого на сервер устанавливается программка, которая периодически проверяет "внешний" адрес машины и обновляет его в dns таблице для my-superserver.dyndns.info - т.е. для удаленного подключения по ssh мы из локальной сети вводили адрес 192.168.5.1, а из инета будем подключаться к my-superserver.dyndns.info Конечно, в правилах для shorewall надо будет по умолчанию запретить подключения net -> $FW (в policy), а в rules добавить правило-исключение для определенного адреса (например разрешить подключение только из офиса, если у офисной сети постоянный ip).. или разрешить подключения для ssh Так что проделываем: 1) регистрируемся на сайте, получаем "доменное" имя 2) устанавливаем клиент - sudo apt-get install inadyn 3) создаем файл с настройками /etc/inadyn.conf, в который пишем: ## inadyn configuration file update_period_sec 600 # Check for a new IP every 600 seconds # DynDNS username and password here username ## имя регистрации на сайте ## password ## пароль регистрации на сайте ## dyndns_system dyndns@dyndns.org ## Dynamic DNS hosts alias my-superserver.dyndns.info Все, теперь компьютер можно будет "отыскать" в интернете по удобному имени (вместо 4-х цифр, которые к тому же могут часто меняться); для того, чтобы inadyn запускалась автоматически, надо sudo crontab -e соглашаемся со всем, добавляем строку @reboot /usr/sbin/inadyn Как часто будет проверяться/обновляться адрес, зависит от параметра update_period_sec, можно частить, а можно и раз в сутки.. тут все зависит от того, как часто ip-адрес провайдером меняется

Настройка домашнего интернета (4)

Основная функция нашего интернет-шлюза - работа с пакетами, которые шлются от компьютеров в локальной сети (к гуглу, к аське и т.д. и т.п.) и пакетами, которые шлются из интернета; он собственно должен сортировать - какой пакет кому, какой пакет выбросить, какой запретить.. Для этого в ubuntu есть iptables - монструозная программа, для настройки которой хацкеры напамять помнят:
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset 
Есть способ и попроще :) Этот способ называется Shorewall. Это не то, чтоб файрвол, собственно iptables и есть файрволом, shorewall просто утилита для составления правил для файрвола в виде чуть проще, чем приведенное мною выше. Устанавливается как и все:
sudo apt-get install shorewall
Настраивается тоже достаточно просто, на сайте к тому же есть много доки, в т.ч. и на русском Настройки (опять же как у многих) хранятся в /etc/shorewall; сразу после установки там практически пусто - 2 файла, один из которых надо подправить. Раз править надо будет файл в /etc - значит понадобится sudo; кроме того, в данном конкретном случае удобно будет пользоваться mc - искать по каталогам файлы, копировать их, править.. так что надо запустить mc с правами и с его помощью все настраивать.
sudo mc
Для начала перейдем в папку /etc/shorewall и откроем файл shorewall.conf (по F4); в этом файле надо найти строку
STARTUP_ENABLED=
и убедится, что там указано Yes, дальше надо найти строку
IP_FORWARDING=
и тоже изменить ее значение на Yes, и сохранить файл. Для того, чтобы настроить собственно правила для нашей сети (для обмена между двумя сетями, нашей локальной и глобально-интернетной) надо узнать, что думает обо всем этом shorewall. shorewall думает понятиями "зон" - в нашем случае есть зона - наша локальная сеть, есть зона - весь остальной интернет; есть еще специальная зона - компьютер, на котором запущен shorewall. Определения зон содержаться в файле zones, который должен лежать в папке /etc/shorewall и которого тут пока нет; его можно взять в папке с образцами, которую с помощью mc легко найти в /usr/share/doc/shorewall-common/examples/two-interfaces - копируем его с помощью mc в /etc/shorewall (переход между панелями - левой/правой - в mc делается клавишей Tab) Настоящие хацкеры конечно же делали бы все в хардкорной консольке, введя
cd /usr/share/doc/shorewall-common - перейти в папку с файлом
sudo cp ./zones /etc/shorewall - скопировать файл zones в папку /etc/shorewall, команду копирования (cp - от copy) запустить от sudo
Но с помощью mc имхо быстрее; скопировали, вернулись в /etc/shorewall, посмотрим на zones - вот определение зон для нашего шлюза:
fw    firewall
net   ipv4
loc   ipv4
Теперь, если надо упомянуть любой компьютер в локальной сети, мы просто скажем loc (это не касается шлюза - он стоит особняком и для него - отдельные правила), любой компьютер вне нашей домашней/офисной сети - net. У shorewall действует правило "запрещено все, что не разрешено", т.е. если какое-то взаимоотношение не описано как "можно" - оно будет запрещено; делается это в файле policy, который тоже надо скопировать в /etc/shorewall Если посмотреть на его содержимое, то видим:
loc  net  ACCEPT - разрешены запросы из локальной сети в интернет
loc  $FW  REJECT - будут отвергнуты запросы любого локального компьютера к файрволу
loc  all  REJECT - будут отвергнуты все запросы локальной сети в остальных случаях

$FW  net  REJECT
$FW  loc  REJECT
$FW  all  REJECT - файрволу вообще ничего не разрешено

net  $FW  DROP
net  loc  DROP
net  all  DROP   - запросы из интернета просто дропаются, это делается для того, чтобы отправитель не знал, что по запрашиваемому им адрему кто-то есть

all  all  REJECT - все что не попало под предыдущее правило, запрещено
ключик info около некоторых правил говорит, что в лог будет добавлено сообщение о срабатывании этого правила. По умолчанию правила параноидальные - почти ничего никому нельзя; чтобы хоть что-то работало, существует еще один файл rules - при анализе пакета сначала ищется правило с этом файле, если там ничего нет - тогда срабатывает какое-нибудь правило из policy
DNS/ACCEPT  $FW  net - например это правило разрешит dns-запросы от шлюза к dns-серверу, находящемуся где-то в инете (у провайдера, или OpenDNS)
SSH/ACCEPT  loc  $FW - это правило разрешит удаленный доступ по ssh из локальной сети в шлюз
Ping/DROP   net  $FW - это правило запретит пинговать наш шлюз хацкерам из интернета
Для начала я бы ослабил правила, на время настройки; например, шлюзу надо разрешить доступ в инет хотя бы для работы apt-get; так что в policy поменяем:
loc  $FW  ACCEPT - разрешим пока полный доступ в шлюз из локальной сети
$FW  net  ACCEPT - разрешим полный доступ в интернет шлюзу
Теперь надо связать сетевые карты и зоны - это делается в файле interfaces - копируем и его, смотрим на содержимое: собственно все очень просто, сначала имя зоны, потом - интерфейс, который смотрит в эту зону, скорее всего ничего менять не придется В локальной сети (которая предположительно подключена к eth1) может быть достаточно много компьютеров; но со стороны интернета виден только один IP-адрес, выданный провайдером adsl-модему (или чем там мы подключены), наш шлюз кроме прочего делает преобразования адресов; для того, чтобы оно работало, нужен файлик masq - он как раз определяет, что в что транслируется - первой записью в нем идет интерфейс, смотрящий в net, второй - в loc; копируем и этот файлик в /etc/shorewall Ну собственно настройки пока все; shorewall умеет делать "шейпинг трафика" - т.е. ограничивать трафик по разным условиям, одно время у меня это работало (потому что торрент-клиент забирал весь трафик под себя и компьютеры в локальной сети очень медленно грузили странички сайтов.. но на 5 МБит смысла в нем не стало и я правила эти поудалял, но если найду бекапы - то и о них напишу) А, еще - последний файл, который нужен - routestopped: в нем указание, какие интерфейсы будут работать, если shorewall отключен - указываем там интерфейс, который смотрим в локальную сеть Для проверки созданной конфигурации у shorewall есть специальная команда
sudo shorewall check
смотрим на вывод в консоль; если нет ошибок, то файрвол можно запустить (ключ start); если файрвол запущен и в конфигурации делались правки - то сначала надо проверить все (check), а потом перезапустить файрвол (restart) На самом делел shorewall просто делает конфигурационные файлы для iptables; посмотрим на действующие ДО запуска shorewall правила:
sudo iptables -L
Пусто? должно быть пусто; теперь запустим shorewall, он создаст правила и применит их в iptables; еще раз запустим iptables -L - сколько всего туда добавилось! Чтобы shorewall запустился при старте, надо еще открыть в текстовом редакторе файл /etc/default/shorewall и изменить значение параметра startup на "1"; перезагрузимся для чистоты эксперимента - в логе загрузки видно, что shorewall успешно стартовал; а можно пока не перезагружаться, а установить pdnsd - кеширующий dns-сервер, который в принципе пригодится для локальной сети: однажды зделанный запрос на разрешение имени в IP-адрес сохранится в базе pdnsd и в следующий раз разрешение имен пройдет практически мгновенно. Я устанавливал pdnsd себе из-за того, что у моего провайдера периодически случались глюки с dns-серверами Установка - sudo apt-get install pdnsd; установщик спросит тип конфигурации - я выбирал Manual, после чего для начала работы надо подправить 2 файла Открываем файл /etc/defaults/pdnsd и меняем значение параметра START_DAEMON на yes - это изменение нужно для того, чтобы сервер стартовал вместе с системой; а значение параметра AUDO_MODE оставляем пустым; также надо изменить файл /etc/pdnsd.conf - в нем собственно настройки сервера. Мои настройки такие: 1) секция global: в ней меняем только значение параметра server_ip на 192.168.5.1 (т.е. на IP-адрес карты eth1, которая смотрит в локальную сеть) 2) сразу после закрывающей скобки секции global добавляю секции:
rr {
   name = ubuntu.localhost;
   ns = localhost;
   a = 192.168.5.1;
}

server {
  label = "mydns";
  ip    = 208.67.222.222; - это IP-адрес OpenDNS-сервера, сюда можно записать адрес, выдаваемый провайдером
  proxy_only = off;
}
Все остальное из файла я убрал; первая секция (rr) определяет разрешение локальных ресурсов, servers указывает на внешние dns-сервера, с которых будет при необходимости запрашиваться и сохранятся соответствие адресс = IP. Сохраняем файл; читал также где-то рекомендацию удалить resolvconf, который устанавливается автоматически с pdnsd - мне не жалко, удалил (sudo apt-get remove resolvconf), после чего надо отредактировать файл /etc/resolv.conf - просто вписать туда строчку :
nameserver 192.168.5.1
т.е. вписать IP-адрес сетевой карты, которая смотрит в локальную сеть (помним, что компьютеры локальной сети настроены искать dns по этому адресу) Теперь точно можно для проверки перезапустить компьютер (sudo reboot); после загрузки сначала на шлюзе проверим наличие интернета - хотя у нас сервер с хардкорной консолью, это не значит, что мы не можем в нем чего-нибудь погуглить: существует консольный браузер lynx, который можно установить и "проверить интернет":
sudo apt-get install lynx
lynx google.com
(собственно если lynx установился - значит адреса все еще резолвятся и файрвол ничего не заблокировал (я временно ведь разрешил ему ходить в интернет) Теперь сядем за windows-компьютер, Start -> Run -> cmd, ping google.com - если все нормально, то адрес google.com и здесь отрезолвится и пойдет вывод пинга - мол, все хорошо.. Открываем google.com в броузере - у меня открылся :)

Настройка домашенго интернета (3)

Итак, на "шлюзе" интернет есть (по крайней мере гугл пингуется - а значит работает распознавание dns, адрес из google.com преобразуется к ip-адресу; ну и пинги идут - значит сеть есть. Нет - ну надо смотреть :) ) Раз появился интернет - его "расшарить; но перед этим надо обновить систему установщика (и освоить его и неск. полезных утилит). Для чего - не знаю, но везде про это пишут. Установка/удаление программ в ubuntu делается с помощью apt-get, сами программы она берет из сетевых хранилищ, вот список этих хранилищ и рекомендуется обновить сразу же после установки: sudo apt-get update Эта же команда обновляет систему (если есть чего обновлять) - для этого достаточно написать apt-get upgrade Если с интернетом все нормально, то за какую-то минутку все будет готово; можно попробовать установить какую-нибудь полезную программу.. например - mc, Миднайт коммандер. Это консольный файловый менеджер, внешне очень похож на Norton Commander (ну кто его застал), Volkov Commander (советский клон nc) или FAR (ну фар то каждый в жизни наверное видел): sudo apt-get install mc после ключевого слова install перечисляем программы, которые надо установить, в данном случае - только mc Если вдруг программа больше не нужна - она удаляется: sudo apt-get remove название_программы sudo apt-get autoremove При установке программы могут скачаться и установиться нужные ей пакеты; после удаления программы эти пакеты остаются в системе, и вызов с ключем autoremove как раз служит для удаления не используемых больше никем пакетов 3 слова про mc; для запуска просто пишем в консоли mc, для выхода - F10; иногда клавиши Fn не срабатывают, тогда можно просто нажать Esc и кнопку от "1" до "0" - это будет эквивалентом нажатия на F1 - F10. Чаще всего я использую mc просто для копирования кучи файлов, особенно если надо выбрать какие-то файлы из этой кучи.. чтобы найти файл в папке можно нажать Ctrl-S и начать набирать имя файла (с учетом регистра, т.е. больших/маленьких букв) - если файл есть, курсор сразу же перескочит на него И еще отступление: перед тем как (наконец бы) начать настраивать раздачу интернета, надо узнать об одной очень полезной утилитке "из коробки" ubuntu (т.е. ничего устанавливать не надо, она уже установлена) - screen. Это мего-утилита, которая дает пользователь сразу несколько консольных окон; да, сидя за настоящим компьютером можно нажимая Ctrl-Alt-F1/F6 переключаться между консолями и работать в них независимо; но например подключившись удаленно к компьютеру этот финт не пройдет; screen в этом случае просто незаменим. Например, вводим что-то длинное и забыли параметр? - переключаемся в новую консоль, читаем там man, возвращаемся назад и дописываем команду. Итак, пишем screen; в последней убунту меня переспросили про цветовую схему (screen profile), раньше такого не было.. я бы выбрал (и выбрал) первую - plain.. нет никаких "свистелок-перделок", отвлекающих и запутывающих.. Кажется, что ничего не изменилось?.. Ну наберем man screen и видим справку по screen; ее хорошо бы почитать, но все, что надо знать в общем-то - что для вызова новой консоли достаточно нажать Ctrl-A C - все, появилось новое окно с приглашением ввода; а где старое? - Ctrl-A Space (пробел) - вот оно, мы в него вернулись. Вообще говоря не вернулись, а перешли "по кругу"; можно запустить много консолей, и по пробелу переключаться между ними по очереди. Можно переключаться по номеру - Ctrl-A #, где вместо # - номер консоли; но как их можно запомнить?.. я не могу :) Чтобы выйти из консоли - просто пишем exit, если выйдем из последней созданной в screen консоли - screen закончит работу. А вот супер-мего фишка скрина: нажимаем Ctrl-A D и - отсоединяемся от screen; не выключаем его, а оставляем, хоть на 5 минут, хоть на неделю; когда вернемся - пишем screen -x - и попадаем назад, где все сохранилось в том виде, в котором все оставили. Несколько практических применений screen у меня в компьютере: торрент-клиент rtorrent. При старте системы он запускается, но не блокирует консоль, а работает в отдельном сеансе в screen, я всегда могу переключится на него, поглядеть чего-нибудь, добавить закачку, и переключится на другую консоль, чтобы сделать что-то еще очень полезное. Или просмотр логов при настройке: в отдельной консольке пишу tail -f /var/log/messages это означает - показать содержимое лог-файла messages (который лежит в специальной папочке для лог-файлов), причем показать хитро - новые сообщения в лог тут же добавляются на экран (т.е. мы не получаем назад командную строку, команда еще не отработала, для прекращения ее работы достаточно нажать - да, Сtrl-C). В другой консоле меняем настройки, а для проверки периодически посматриваем на лог - что там происходит после изменения настроек..

понедельник, 13 июля 2009 г.

Настройка домашнего интернета (2)

Ubuntu установилась и перезагрузилась, видим черный экран с мигающим курсором... это хардкорно :)

Немного ликбеза - не считаю себя великим знатоком линукса, несмотря на то, что уже 3-й год им пользуюсь.. знаю только то, что надо знать для моих задач, не больше (но и не меньше), когда не знаю - спрашиваю или ищу (на forum.ubuntu.ru например)

Так что вот что имхо надо знать для начала: консоль; это черное окно с мигающим курсором - это консоль, сюда крутые хацкеры вводят сложные команды, чтобы удаленно заходить на сервера пентагона в поисках военного порно :) В системе ничего сделать нельзя, пока не войдешь в нее - для этого надо имя и пароль. Ввели, если все нормально - можно что-то делать

Например посмотреть - сеть/инет у нас как, есть? Самый простой способ - "попинговать": пишем в консоль
ping google.com ( понятное дело означает "нажали на большую кнопку Enter"):

Прервать вывод этой (и многих других) команд можно нажав сочетание Ctrl+C

Если непонятно, что это за фигня написана, какой-то ping - можно спросить у системы помощь по команде, например введя
man ping


Чтобы выйти из просмотра мануала, нажимаем "q"

Чтобы посмотреть состояние сети, пишем
ifconfig
(ну вообще я запарился добавлять , и так понятно думаю):

Видим странное (если не сказать большего) буквосочетание eth0; не знаю, как это расшифровывается, но обозначает сетевую карту (ethernet наверное, а цифра - номер по порядку, нумерация с нуля)
Хорошо, eth0 есть, а где вторая карта? Видимо отключена (есть еще варианты "не работает", "сгорела от удара молнии" и т.д., но будем надеятся на лучшее); пора "править конфиги" :)

Для правок конфигов я использую текстовый редактор pico; он не самый лучший, я его просто использую и другие не пробовал. Для того, чтобы отредактировать файл, достаточно ввести

pico имя_файла

Это в теории; на практике надо еще знать 2 вещи: про файловую систему и про суперпользователя.

Про файловую систему надо читать отдельно, я только скажу, что она отличается от принятой в виндовс системы именования дисков буквами - тут есть корень файловой системы "/", к которому подключается.. чего только не подключается: жесткие диски, компакт-диски, флешки, образы дисков, удаленные файловые системы.. "Выше" корня (т.е. выше "/") ничего нет - точно так же, как нет ничего выше My Computer в виндовс (хотя сравнение не совсем и правильное)

При загрузке к корню примонтируется раздел /home, где лежат файлы пользователей; для практики можно посмотреть, чего там творится:

cd ~ - cd (от Change Directory) - команда изменения каталога, ~ - ссылка на домашний каталог текущего пользователя
cd .. - перейти на один уровень вверх по дереву каталогов
ls - показать (list) список файлов в каталоге; пока файлов немного

pico new_file - создали новый файл, попишем чего-нибудь в него, чтобы закончить - Ctrl-X, соглашаемся, что хотим сохранить изменения - Yes - не сохраняет? Permission denied?


Это вторая вещь - права; сейчас мы находимся в папке /home и писать просто так сюда текущему пользователю нельзя - не его это папка :)

В свою - пожалуйста, а сюда - нельзя; а как быть, если надо (ну ладно, в /home вряд ли надо кому-то что-то писать, но в папку с системными настройками например)? Для случаев, когда пользователю нужны права "выше среднего", в линухе есть команда sudo - выполнить команду от имени администратора (в виндовс UAC - это что-то типа этого); так что если написать
sudo pico new_file,
в поредактировать что-то и попытаться сохранить - система послушно согласится, что да, имеешь право. Только перед выполнением она спросит пароль текущего пользователя, и если ввести его правильно - все, следующая команда выполнится от имени администратора

Зная это можно покопаться в конфигах наконец.. много конфигов хранится в каталоге /etc:
cd /etc
ls

Что, вылетело много букв и не успели прочитать? Нажимаем одновременно Shift+PgUp/PgDown и просматриваем длинный листинг; можно по другому, с использованием команд less/more:
ls | less - значек "|" перенаправляет вывод одной команды на вход другой; less показывает вывод постранично, по пробелу перелистывает страницу, по q прекращает работу
Вот среди этого разнотравья в папке network лежат настройки сети, посмотрим, чего там написано:
sudo (потому что папка системная, кому попало в нее писать нельзя) /etc/network/interfaces

Чтобы не надрываться вводом длинных имен файлов/папок в командной строке есть фишка для ускоренного ввода - набираем неск. начальных букв, потом нажимаем - система сама попробует подставить нужное имя; если есть конфликты (например в папке лежат file1 и file2), то система подставит только общую часть и покажет варианты, а пользователь решит, что ему надо; так что предыдущую команду можно вводить так:
sudo pico /etc/network/interfaces
Видим, что система настроила только одну сетевую карту.. настроила - громко сказано, все настройки получать от dhcp-сервера; но если сетевая карта подключена к adsl модему, у которого включен dhcp - то зачем все усложнять?..
Настройки второй сетевой карты надо ввести руками; допустим, что внутренняя сеть имеет адреса 192.168.5.*, а именно наш конкретный компьютер как самый главный традиционно получит первый адрес; дописываем (для того и sudo нужно было) в /etc/network/interfaces след. строки:

auto eth1
iface eth1 inet static
address 192.168.5.1
netmask 255.255.255.0

и сохраняем файл; чтобы изменения вступили в силу, надо перезагрузить сетевую подсистему; программы и скрипты часто (может и всегда, не знаю) лежат в /etc/init.d, надо запустить службу networking, для запуска надо иметь права администратора, так что пишем
sudo /etc/init.d networking restart

Проверим (ifconfig) - в выводе должны присутствовать оба сетевых адаптера, второй (eth1) - c заданным нами статическим ip-адресом

Самое время отвернуться от убунту и настроить остальные компьютеры локальной сети; собственно настройка сводится к тому, что в свойствах сетевых карт надо указать:

IP адрес - любой из диапазона 192.168.5.2 - 192.168.5.254
маска подсети - 255.255.255.0
шлюз по умолчанию - 192.168.5.1
адрес dns сервера - 192.168.5.1

Если компьютеров 1-2, то проще один раз дать им статические адреса; а если их больше и не хочется помнить - тогда можно и свой dhcp-сервер поднимать - но не все же сразу
Итак, настроили сетевую карту windows-компьютера, нажали Старт-Выполнить-cmd, ввели

ping 192.168.5.1

и если все нормально - наш интернет-шлюз должен пинговаться! пол-дела уже практически сделано :)

Настройка домашнего интернета (1)

Как только я начинаю гуглить что-то про настройку убунты, я тут же вижу, что это очень модно, писать рецепты для нее; я тоже хочу быть модным, поэтому тоже буду писать рецепты для убунту :)
На самом деле я просто собираюсь как-нибудь проапгрейдить свое домашнее хозяйство, а тут оказия потренироваться - так я и модно продвинусь, и руку набью
В общем - как установить Ubuntu и научить ее раздавать интернет в локальную сеть

Я уже хвалился, что у меня для интернета выделен и исправно трудится старенький компьютер, детали на который в свое время мне (или добрым людям, отдавших их мне) просто жалко было выкинуть: сначала это был Celeron-700, с 384 мб памяти и 80 Гб винтом, потом процессор немного улучшился с оказией на Athlon 2000.

Для слабого компьютера и выбиралась в свое время операционка, не помню уже по какой причине, но ею стала Ubuntu.. наверное потому, что когда-то в офисе болтались бесплатные диски с десктопной версией, 7.04 кажется, и один из этих дисков у меня нашелся в нужный момент, так что изначально у меня была десктопная версия 7.04, у которой позже я отключил gui - он мне был не нужен, и тормозной сильно уж был (видео в материнке было встроенное - читай "фуфловое") - и которая как-то со временем (я даже не помню как) проапгрейдилась до 8.04

Когда недавно в одном "дружественном" мне офисе (который платит деньги за то, что у них все работает) обострились проблемы с интернетом, я решил, что им тоже надо поставить убунту - заодно и потренировался в установке серверного варианта последней на сегодня версии - 9.04

Итак, Т.З.: есть компьютер не особой свежести, звезд с неба не хватает, но работает; есть "хороший" интернет ("хороший" = не диалап), т.е. есть смысл его раздавать в сеть из нескольких компьютеров); надо, чтобы
  • пользователи сети (секретарша в офисе или жена дома) не задумывались о том, откуда берется интернет, а просто им пользовались
  • злые хацкеры не знали, что у нас есть интернет и не делали нам разные гадости
  • если у компьютера большой жесткий диск, то пусть на этом компьютере хранятся файлы - видео, семейные фото - да мало ли
  • видео в наше время может качатся из инета из пиринговых сетей - пусть этот компьютер и качает его, раз он все время (теоретически) включен - для рейтинга на торрент-трекерах хорошо
  • ну додумается по ходу дела..
(!) При раздаче интернета в локальную сеть мы имеем фактически огромную сеть ТАМ, где-то во внешнем мире, и небольшую (возможно всего 2 компьютера) сеть ЗДЕСЬ, у нас в офисе или квартире; поэтому в компьютере, который будет рулить обменом между этими сетями, должно быть 2 (две) сетевые карты - одна будет подключена во внешний мир, другая - в нашу домашнюю/офисную сеть.. Учитывая, что сейчас практич. любая материнская плата имеет встроенную сетевую карту, докупить еще одну, самую простую - не очень разорительно.. А лучше всего - купить две одинаковые сетевые карты на проверенном чипе (Realtek 8139 кажется работает везде и всюду.. я ее специально покупал в свое время, чтобы заработала сеть в Хакинтоше)

Начинается все с загрузки с сайта ubuntu.com образа подходящего дистрибутива, для моих целей нужен сервер; качаем, прожигаем на болванку и в зависимости от типа материнской платы как-то загружаемся с этой болванки; если образ не битый и записан без проблем, то начнется установка

Начнется она с выбора языка; при всей любви к великому и могучему я обычно стараюсь обходится английским, исключается ряд проблем, связанных с локализацией и недопониманием в связи с этим:

После выбора языка видим стартовое меню, интересует самый первый пункт - Install Ubuntu Server

Выбрали, начинается установка с вопросов про язык установки, страну пребывания, раскладку клавиатуры - все это я обычно оставляю по умолчанию.
Дальше начинается автоматическое определение сетевых карт; хорошо бы, чтобы при этом сетевая, которая смотрит в интернет, могла его увидеть - т.е. adsl-модем был включен или шнурок от провайдера был воткнут.. хотя все можно настроить и вручную позже:

Скриншот сделан в виртуалке, поэтому и такие названия сетевых карт..
После того, как сетевые карты настроены, надо сказать - как будет называться наша машина и указать временную зону (не знаю, правильно ли - я просто выбираю Central)


Дальше надо разбить жесткий диск; систему можно поставить на пустой жесткий диск, а можно поставить и параллельно существующей операционке (хотя смысл не вижу); в любом случае на жестком диске должно быть немного свободного места: немного - ну например у меня для системы отведено 5 гигабайт и его хватает:

Здесь опять же виден диск, созданный виртуальной машиной; в "реальной жизни" его тип и буквы будут другими

Если диск пустой - выбираем его "целиком" и создаем новые разделы, иначе выбираем свободное место и начинаем его делить: сам не придумал, а прочитал где-то, что есть смысл в 3-х разделах: в "/" живет собственно система, мне хватает для него 5 гигабайт; еще один раздел, размером от 1 до 2 размеров оперативной памяти, нужен для "файла подкачки" наверное?.. для /swap в общем.
Ну и данные пользователей хорошо бы хранить на отдельном разделе (размер которого конечно ограничивает только запросы этих самых пользователей и размер дисков) - тогда систему можно переустановить, не потеряв эти самые данные пользователей..
В любом случае - выбираем нераспределенное место, указываем размер, выбираем тип:







Точно так же добавить swap и /home  разделы, только тип раздела стоит указывать не primary, а logical (иначе у кого-то там могут возникнуть проблемы с загрузкой - сам не придумал, где-то прочитал):

Для создания swap в Use as: выбрать "swap area"


Остаток места выделить под /user (инсталлятор уже все предугадал и настроил, надо только с ним согласится):

Когда все место "поделено" - применяем изменения

Идет инсталляция, даже на виртуальной машине это занимает совсем немного времени...


Затем создается новый пользователь, надо ввести полное имя пользователя, логин, 2 раза пароль (установка предупредит, если пароль "слабый"), дальше можно включить шифрование каталога с пользовательскими данными.

Перед подключением к инету инсталлятор запрашивает адрес прокси-сервера, после чего настраивает apt-get, затем предлагает настроить автоматическое обновление системы

Дальше можно сразу установить разные сервисы, хотя я ничего пока не устанавливал (потому что тогда - может быть - будут не очень понятны различные рецепты из интернета по установке/настройке различных служб)

В самом конце устанавливается и настраивается grub, если есть другие операционки, то они будут доступны в меню загрузки.

Все, инсталлятор предлагает вынуть диск из лотка и первый раз перезагрузится