14 заметок с тегом

ubuntu

Ctrl + ↑ Позднее

Настройка маршрутизации в Ubuntu Linux, для начинающих

4 мая 2012, 9:51
Оригинал: http://forum.ubuntu.ru/index.php?topic=12454.

Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные
маршрутизации хранятся в одной из таблиц ядра. Вести таблицы
маршрутизации можно статически или динамически. Статический маршрут —
это маршрут, который задается явно с помощью команды route.
Динамическая маршрутизация выполняется процессом-демоном (routed или
  gated), который ведет и модифицирует таблицу маршрутизации на основе
сообщений от других компьютеров сети. Для выполнения динамической
маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP,
BGP и т. д.

Динамическая маршрутизация необходима в том случае, если у вас
сложная, постоянно меняющаяся структура сети и одна и та же машина
может быть доступна по различным интерфейсам (например, через разные
Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно
не меняются, даже если используется динамическая маршрутизация.
Для персонального компьютера, подключаемого к локальной сети, в
  большинстве ситуаций бывает достаточно статической маршрутизации
командой route. Прежде чем пытаться настраивать маршруты, просмотрите
таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны
увидеть что-то вроде следующего

rigon@ubuntu-comp:~$ netstat -n -r

Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth1


Если таблица пуста, то вы увидите только заголовки столбцов. Тогда
надо использовать route. С помощью команды route можно добавить или
  удалить один (за один раз) статический маршрут. Вот ее формат:

route -f операция -тип адресат шлюз интерфейс


Здесь аргумент операция может принимать одно из двух значений: add
(маршрут добавляется) или delete (маршрут удаляется). Аргумент адресат
может быть IP-адресом машины, IP-адресом сети или ключевым словом
default . Аргумент шлюз  — это IP-адрес компьютера, на который
следует пересылать пакет (этот компьютер должен иметь прямую связь с
  вашим компьютером). Команда

route -f


удаляет из таблицы данные обо всех шлюзах. Необязательный аргумент тип
принимает значения net или host . В первом случае в поле адресата
указывается адрес сети, а во втором — адрес конкретного компьютера
(хоста).

Как правило, бывает необходимо настроить маршрутизацию по
  упоминавшимся выше трем интерфейсам:
* локальный интерфейс (lo),
* интерфейс для платы Ethetnet (eth0),
* интерфейс для последовательного порта (PPP или SLIP).

Локальный интерфейс поддерживает сеть с IP-номером 127.0.0.1. Поэтому
для маршрутизации пакетов с адресом 127.... используется команда:

route add -net 127.0.0.1 lo


Если у вас для связи с локальной сетью используется одна плата
Ethernet, и все машины находятся в этой сети (сетевая маска
255.255.255.0), то для настройки маршрутизации достаточно вызвать:

route add -net 192.168.36.0 netmask 255.255.255.0 eth0


Если же вы имеете насколько интерфейсов, то вам надо определиться с
  сетевой маской и вызвать команду route для каждого интерфейса.
Поскольку очень часто IP-пакеты с вашего компьютера могут отправляться
не в одну единственную сеть, а в разные сети (например, при просмотре
разных сайтов в Интернете), то в принципе надо было бы задать очень
много маршрутов. Очевидно, что сделать это было бы очень сложно,
точнее просто невозможно. Поэтому решение проблемы маршрутизации
пакетов перекладывают на плечи специальных компьютеров —
маршрутизаторов, а на обычных компьютерах задают маршрут по умолчанию,
который используется для отправки всех пакетов, не указанных явно в
  таблице маршрутизации. С помощью маршрута по умолчанию вы говорите
ядру «а все остальное отправляй туда». Маршрут по умолчанию
настраивается следующей командой:

route add default gw 192.168.1.1 eth0


Опция gw указывает программе route, что следующий аргумент — это
IP-адрес или имя маршрутизатора, на который надо отправлять все
пакеты, соответствующие этой строке таблицы маршрутизации.
Вот немного теории с сайта linuxcenter.ru

А теперь пример из жизни
Имеются следующие интерфейсы /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255
auto eth1
iface eth1 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255


Интерфейс eth0 это связь с локальной сетью состоящей из 20 подсетей
192.168.1.х-192.168.20.х

Интерфейс eth1 это связь с ADSL модемом с выходом в интернет. Так
большинство запросов идут в Инет на этом интерфейсе прописываем шлюз
(gateway 192.168.254.1) данный параметр указывает в системе шлюз
по-умолчанию, обращаю внимание, что шлюз надо прописывать только на
  одном интерфейсе, иначе в системе появятся 2 маршрута по умолчанию и
  естно будет затупление в работе. С интернетом разобрались.

Но требуется еще просматривать ресурсы локальной сети
для этого надо выполнить вот эти команды

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0


На этом примере маршрутизируются 3 подсети

Все эти команды и многие другие можно прописать в файлк
/etc/network/interfaces в итоге получится следующее:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
auto eth1
iface eth1 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255


Ну вот и все по аналогии настраиваются любое кол-во маршрутов и
  сетевых интерфейсов

Дополнение 1.

Обратите внимание

hwaddress ether 00:E0:4C:A2:C4:48


так легко можно изменить MAC, не забываем после редактирования файла
делать рестарт

sudo /etc/init.d/networking restart


Дополнение 2.

Следует отметить, что:
1) Для того, чтобы просмотреть таблицу маршрутов достаточно запуска
команды route без параметров или route -n, если в сети нет DNS.
2) Маска может быть записана проще, в виде /x, где x — число единичных
битов, например:

route add -net 192.168.36.0/24 eth0


вместо

route add -net 192.168.36.0 netmask 255.255.255.0 eth0


Настройки сети размещаются в файле /etc/network/interfaces
При подключение к Inet через VPN (ppp0...), необходимо заменять
маршрут по умолчанию на ppp0.

А проще указать в файле /etc/ppp/options следующее:

defaultroute
replacedefaultroute


тогда маршрут заменяется сам и при отключении восстанавливается.

Дополнение 3.

Есть прога, серверная часть которой стоит во внутренней сети, например
Radmin Server, чтобы к нему подключиться клиентская прога (Radmin
Viewer) запрашивает соединение по порту 4799 (например). Все работает
внутри локальной сети. Есть шлюз (с внешним IP), через который
обеспечивает доступ в и-нет всех компов внутренней сети. Теперь
вопрос, как настроить шлюз, чтобы при обращении из вне клиентсокой
частью к IP шлюза по порту 4799, он пробрасывал этот запрос дальше,
например на 192.168.0.2 по томуже порту?

Для этого есть команда iptables:

iptables -t nat -D PREROUTING -i <интерфейс> -s <IP откуда будет коннект>
-p tcp —dport 4899 -j DNAT —to-destination 192.168.0.2:4899


Если ограничивать входящие IP не требуется, то опцию -s можно
опустить.
Пример:

iptables -t nat -D PREROUTING -i vlan1 -s 213.87.34.20/24 -p tcp
 —dport 4899 -j DNAT —to-destination 192.168.128.24:4899

iptables -t nat -A PREROUTING -i eth0 -p udp —dport 3658 -j DNAT
 —to-destination 192.168.0.2:3658
linux   ubuntu

Утилита Screen

4 мая 2012, 9:47
Введение

Данная утилита GNU Screen имеет множество функций. Очень удобно использовать эту утилиту при удаленном подключении к системе по ssh. Но наиболее частое ее применение — сворачивание в фон программ, которые сами этого не умеют, с возможностью последюущего возврата к ним. это может быть полезно при работе с программами, которые реализованы не в виде «демон+клиент», а единым целым, и не работают без запуска интерфейса. Типичный пример — rtorrent, который при всех своих преимуществах запускается только в виде консольного интерфейса, а в фон уходить не умеет, можно только «выйти вообще». Его и возьмем в качестве примера.

Запуск и основы работы Screen

Screen создает отдельные объекты, называемые иногда «скринами». Каждый скрин — это что-то вроде окна, которое можно свернуть-развернуть, если проводить аналогию с графическим интрефейсом. Только вместо окна вы получаете виртуальную консоль, которую можно отправить в фон или вывести на передний план, и в которой запускается указанное приложение.
Простейший запуск осуществляется командой:

screen

При запуске в таком виде, т. е. без параметров, программа создаст новый скрин, в котором откроет сессию командной оболочки, как если бы вы залогинились в tty-консоли или открыли новую вкладку в графическом терминале, для наглядности выполните что-нибудь в командной строке — например, ls.
Теперь о том, как свернуть запущенный скрин вместе со всем, что в нем работает. Для этого нужно нажать Ctrl+A, после чего нажать D. в принципе, это единственная комбинация, которую простому пользователю стоит запомнить. Сtrl+A переведет screen в командный режим. клавиша D даст команду свернуть текущий скрин. Теперь вы можете закрыть терминал или разлогиниться с tty-консоли — запущенный в свернутом скрине процесс продолжит работу в фоне.
Для того, чтобы вернуться к свернутому скрину, достаточно запустить:

screen -r

Ключ -r как раз и укажет программе, что нужно развернуть свернутый скрин (если таковой, конечно, имеется). Перед вами должна предстать та самая сессия в консоли, которую вы свернули, со всем, что в ней было.
Теперь выйдете из сессии с помощью команды exit. Screen сообщит о завершении своей работы. Таким образом, вам достаточно выйти из запущенного в скрине процесса, а screen выключится сама.
Далее запустим вышеупомянутый rtorrent. Делается это предельно просто — нужно указать screen команду для запуска. Тогда вместо командной оболочки откроется указанная программа:

screen rtorrent

Перед вами открылся rtorrent, его можно свернуть, а потом вернуться к нему, как описано выше. Rtorrent будет качать/раздавать в фоне, избавляя вас от необходимости держать ради него открытую вкладку терминала или tty-консоль (что еще и небезопасно).

Работа с несколькими скринами

Eсли вам нужно запустить лишь одну программу — вышеописанного более чем достаточно, но в случае если таких программ несколько — скринам нужно будет раздать имена, чтобы screen знала, к какому именно свернутому скрину вы хотите вернуться. Имя создаваемого скрина задается с помощью ключа -S:

screen -S rtor rtorrent

Cверните скрин с rtorrent'ом и запустите еще что-нибудь, к примеру nano:

screen -S nano nano

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

screen -r nano

Список запущенных скринов можно посмотреть с помощью:

screen -list

или

screen -ls

Возможно так-же вернуться к уже развернутому в ином терминале скрину:

screen -x nano

Запуск скрина в свернутом виде

Программу можно запустить сразу в свернутом скрине. Это полезно в случае с автозапуском, или когда вы знаете, что программа сама все сделает (установит соединение и продолжит закачку/раздачу в нашем примере с rtorrent), и смотреть там не на что. Делается все опять же просто. Команда на запуск будет такой:

screen -dmS rtor rtorrent

Ключ -d укажет, что скрин нужно свернуть, а ключ -m — что его нужно для начала создать. Процесс «усложняется» по той причине, что ключ -d по умолчанию используется для сворачивания ранее запущенного скрина, развернутого на другой консоли или в соседней вкладке, с той целью, чтобы развернуть его в текущем месте (ибо если одна и та же программа управляется из двух мест — это может и к конфузу привести). Таким образом нужная программа запустится сразу в фоне, а screen лишь выведет сообщение о том, что программа запущена, и скрин свернут.

Прочие возможности

Данная статья описывает лишь основы. На самом деле утилита screen обладает массой возможностей, например: можно разбить экран пополам, отобразив несколько скринов с разными программами; можно задать множество разных параметров, настроить под разные типа терминалов. Во всем этом поможет разобраться screen —help или man screen. Также есть еще одна полезная комбинация клавиш. Как сказано в мануале, «если вам лень читать кучу текста — запомните эту комбинацию» — Ctrl+A и затем ? 1). Вам будет выведен список доступных сочетаний клавиш и команд, которые они выполняют. Все это нажимается также после Ctrl+A.
linux   ubuntu

FTP сервер в Ubuntu

4 мая 2012, 9:45
Моя задача была поднять FTP-сервер + открыть к нему доступ из интернета. Для выполнения этой задачи был выбран сервер proftpd. О его установке и настройке я хочу поведать Вам сегодня. В статье написано пошагово как это сделать:

Устанавливаем пакет proftpd:

sudo aptitude install proftpd

Отвечаем на появившийся вопрос о способе запуска: «самостоятельно». Открываем файл /etc/shells:

sudo gedit /etc/shells

Добавляем в него строку:

/bin/false

Создаем в /HOME каталоге папку FTP-shared(Не обязательно в корне /HOME и не обязательно такое имя папки, это просто пример):

sudo mkdir /home/FTP-shared

Теперь создаем пользователя с именем userftp(ну или что поинтересней):

sudo useradd userftp -p pass -d /home/FTP-shared -s /bin/false

Вместо «pass» — ввести свое слово или фразу в качестве пароля(не вводите только цифры, работать не будет). В папке FTP-shared создаем две вложенные папки(называем как хотим):

sudo mkdir /home/FTP-shared/public
sudo mkdir /home/FTP-shared/upload

Присвоим права созданным папкам:

sudo chmod 755 /home/FTP-shared
sudo chmod 755 /home/FTP-shared/public
sudo chmod 777 /home/FTP-shared/upload

FTP-shared и public — только чтение. upload — запись. Переименовываем имеющийся конфигурационный файл proftpd.conf и создаем новый:

sudo mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.old
sudo gedit /etc/proftpd/proftpd.conf

Добавляем в него: proftpd Если Вы создавали структуру папок, имя пользоватля и т.д не как в статье, то редактируйте данный файл под себя. После произведенных действий фтп-сервер будет иметь следующие параметры доступа:

user (пользователь): test
password (пароль): pass (тот, что присвоен для userftp)

Можно создать несколько пользователей, но все они должны быть прописаны в файле proftpd.conf. Если нужно сделать анонимный доступ, следует закомментировать обе секции для test и раскомментировать секцию для Anonymous. Сервер запущен, но с параметрами по умолчанию, перезагружаем его:

sudo /etc/init.d/proftpd restart

Что бы узнать, кто подключен к фтп-серверу в данный момент используется команда ftptop (клавиша t меняет отображение, q — выход). Полезные советы: Если нужно подключить какую-либо папку к фтп-серверу (например, проверить работу только что созданного фтп-сервера) без редактирования конфига пригодится команда:

sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/public

или с доступом на запись:

sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/upload

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

sudo umount /home/FTP-shared/public
sudo umount /home/FTP-shared/upload

Для постоянного доступа к нужным папкам подключаем их посредством fstab. Бэкап файла fstab:

sudo cp /etc/fstab /etc/fstab.old

Открываем файл /etc/fstab:

sudo gedit /etc/fstab

и добавляем нужные пути:

/здесь/путь/папки/что/я/хочу/расшарить /home/FTP-shared/public none bind 0 0

Теперь даже при рестарте компьютера информация будет доступна, если сервер за роутером то только в локальной сети. Что бы увидеть фтп-сервер из интернета нужно дать ему внешний ip-адрес. Для этого следует открыть нужный порт (в данном случае 21) для локального адреса (вида 192.168.xxx.xxx) на котором висит сервер, для доступа извне. Следующим шагом нужно дать внешнему динамическому IP-адресу постоянный адрес. Сделать это можно при помощи сервиса DynDNS.com(регистрируемся), создав при помощи его удобный и запоминающийся адрес (вида moi-server.homeip.net). Устанавливаем ddclient:

sudo apt-get install ddclient

Вводим регистрационные данные с DynDNS.com на вопросы пакета. Изменяем ServerName «server» в файле proftpd.conf на ServerName «moi-server.homeip.net». Перезагружаем фтп-сервер:

sudo /etc/init.d/proftpd restart

Пользуемся Автор статьи — Монахов Сергей Спасибо за предоставленную статью
linux   ubuntu

Выключение Windows 2003/2008 через virsh shutdown

4 мая 2012, 9:41
Для того, чтобы работал shutdown по ACPI в гостевой системе необходимо исправить ключ реестра:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\shutdownwithoutlogon
выставить 1.

p.s.
Правда одна проблема, если производится выключение терминального сервера с подключеными клиентами, выдается запрос:«Данный компьютер используется другими пользователями...»
и выключение не производится. Как обойти пока не знаю...

p.s.s.
Ура получилось!!!
Правим реестр:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Error Message Instrument]
«EnableDefaultReply»=dword:00000001

[добавлено]
На wiki от proxmox нашел еще один ключ, иногда windows выключался некорректно:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
«ShutdownWarningDialogTimeout»=dword:00000001

Перезагружаемся и проверяем.
kvm   linux   shutdown   ubuntu   virsh