ifconfig

пятница, 8 мая 2009 г.

1. Просмотр настроек для сетевого интерфейса

При вызове команды Ifconfig без аргументов мы получим список всех активных интерфейсов. Если в качестве аргументы вы укажите имя интерфейса, отобразиться только статистика по данном интерфейсу.

# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:2D:32:3E:39:3B
inet addr:192.168.2.2 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::21d:92ff:fede:499b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:977839669 errors:0 dropped:1990 overruns:0 frame:0
TX packets:1116825094 errors:8 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2694625909 (2.5 GiB) TX bytes:4106931617 (3.8 GiB)
Interrupt:185 Base address:0xdc00

2. Отображение всех интерфейсов, включая отключенные

# ifconfig -a

3. Выключаем интерфейс

# ifconfig eth0 down

4. Запускаем интерфейс

# ifconfig eth0 up

5. Назначаем интерфейсу IP адрес

Назначим IP адрес 192.168.2.2 на интерфейс eth0.
# ifconfig eth0 192.168.2.2

Изменим сетевую маску на интерфейсе eth0.
# ifconfig eth0 netmask 255.255.255.0

Изменим бродкаст адрес для интерфейса eth0.
# ifconfig eth0 broadcast 192.168.2.255

Назначаем IP адрес, маску и бродкаст одной командой.
# ifconfig eth0 192.168.2.2 netmask 255.255.255.0 broadcast 192.168.2.255

6. Изменяем MTU

Для изменения Maximum transmission unit (MTU) на значение XX используем следующую команду..
# ifconfig eth0 mtu XX

7. Promiscuous mode

По умолчанию когда сетевая карта получает пакет, она проверяет адрес получателя. В случае если этот адрес отличен от назначенных ей адресов, пакет отбрасывается. В promiscuous mode, карта не отбрасывает данные пакеты. Вместо этого она принимает все пакеты, приходящие через интрефейс. Для установки данного режима требуются привелегии суперпользователя. Большинство сетевых мониторов и анализаторов используют данный режим для захвата пакетов и анализа сетевого трафика.

Следующуая команда переводи интерфейс в promiscuous mode.
# ifconfig eth0 promisc

Следующуая команда переводи интерфейс в нормальный режим.
# ifconfig eth0 -promisc

Apache: применяем изменения в конфиге без перезагрузки сервера

Выполните следующую команду:
# /etc/init.d/httpd reload

или
# apachectl -k graceful

Различие от нормального рестарта в том, что текущие открытые коннекты не будут сброшены.

Замораживаем сессию vi

Не сомневаюсь что вам иногда требуется, находясь в каком-либо конфиге, выполнить команду в шелле. Например найти название какого либо файла, или посмотреть страницу помощи?

Вместо того чтобы выходить из vi; выполнить необходимую команду и вернуться обратно, есть более замечательное решение, которые вы можете выполнить напрямую из сессии vi:
Введите":", затем введите "shell".

Вы окажетесь в обычном окне шелла, где можете использовать любые команды. Когда вам потребуется вернуться к сеансу vi, наберите команду "exit" и вы вернетесь к своему документу.

Метки Linux разделов

Отображаем текущие метки
Если вызвать команду e2label без параметров, вам будет выведена текущая метка устройства:
# e2label /dev/sda1

Пример вывода:
/boot

Устанавливаем новую метку
Если дополнительным аргументов указана новая метка, тогда команда e2label установит её вместо в качестве новой метки файловой системы. Метка в Ext2 может быть длиной до 16-ти символов. Если новая метка длиннее чем 16 символов, e2label усечет её и выдаст предупреждающее сообщение:
# e2label /dev/sdb2 stroage

Так же можно воспользоваться опцией -L в команде tune2fs:
# tune2fs -L usbstroage /dev/sdb2

mod_perl

среда, 6 мая 2009 г.

Setup mod_perl

# apt-get install libapache2-mod-perl2

# a2enmod perl

# /etc/init.d/apache2 restart

Now the module is installed, but we've not configured it in any way. The simplest way to see an overview of what is happening is to add the perl-status handler. Create the file /etc/apache2/conf.d/perl-status with the following contents:
 #
 # make status information available at
 # http://example.com/perl-status/
 #
 
  SetHandler perl-script
  PerlHandler +Apache2::Status
 


 #
 # But only from the local host, and our trusted
 # remote IP.
 #
 
  order deny,allow
  deny from all
  allow from 127.0.0.1
  allow from your.ip.address
 

Speeding up Perl CGI Scripts
Because mod_perl embeds a persistent copy of Perl inside the Apache webserver you can use this embedded copy of perl to run your existing perl-based CGI scripts faster. This speedup comes from avoiding the overhead of launching a new copy of the Perl interpreter when an incoming CGI request is to be handled, to get a more impressive speedup requires making changes to your script(s).

By default in Debian GNU/Linux system CGI-scripts are located in /usr/lib/cgi-bin - we can specify that Apache run these via mod_perl by making the following changes to our site configuration:

  PerlModule Apache::Registry
  Alias /cgi-bin/ /usr/lib/cgi-bin
 
  SetHandler perl-script
  PerlHandler Apache::Registry
  PerlSendHeader On
  Options +ExecCGI
 


Once you've done this, and reloaded the new configuration (by running "/etc/init.d/apache2 restart"), you find that your existing CGI scripts launch much more quickly!

Конвертация файловой системы из ext3 в ext4

вторник, 28 апреля 2009 г.
Монтрование ext3 как ext4 без конвертации

Во-первых, начиная с ядра 2.6.28 можно монтировать ext2, ext3 и ext4 файловые системы как ext4. Это даст возможность использовать новые оптимизированные штуковины нового драйвера (например, delayed allocation, multi-block allocation и большие inode, если вы свою ext3 форматировали с этой опцией), и при этом физически на диске ничего не изменится, давая возможность вернутся обратно на драйвер ext3, например. Это делается очень просто — в вашем /etc/fstab меняете ext3 на ext4 и всё. Правда.

Конвертация в ext4

Совсем другое дело, если вы хотите использовать новые возможности ext4, такие как extents, которые меняют физический формат хранения данных, но и дают большой выигрыш в производительности.
Чтобы включить новые возможности на вашей ext3 файловой системе, нужно сделать так:

#tune2fs -O extents,uninit_bg,dir_index /dev/{нужный раздел}

Внимание! После этой команды, вы уже никогда не сможете смонтировать файловую систему как ext3.
После этого нужно обязательно проверить файловую систему с помощью fsck, чтобы привести в порядок то, что tune2fs не доделала. Делаем это так:

#e2fsck -pDf /dev/{нужный раздел}

После этого правим /etc/fstab и перезагружаемся.

Примечание: есть некоторые новые возможности, которые можно получить, только заново отформатировав раздел, например, flex_bg и поддержка разделов размером больше 16 терабайт.

Еще одно примечание: не рекомендуется менять размер inode с помощью e2fsprogs версии 1.41.0 или старше, потому что это приводит к испорченным данным и грустным людям.

Последнее примечание: после включения экстентов, новые файлы будут создаваться с их использованием, но со старыми ничего не случится и они продолжат лежать на диске в старом формате. Я где-то читал о волшебной утилитке defrag2fs, которая все старые файлы тоже переводит в новый формат, но, как я понял, она еще очень сырая, плохо работает, опасна для жизни и лучше подождать.

Как загружаться, если /boot тоже ext4

Вообще, конвертировать /boot в ext4 бессмысленно. Но если очень хочется, тогда нужно сначала сделать всё, как написано выше. Затем, нужно немного подправить /boot/grub/menu.lst. Находим вот такую строчку:

title Ubuntu 9.04 <...>
root (hdX,Y)
kernel /boot/vmlinuz-2.6.28-... root=... ro quiet splash


И добавляем к последней в конец rootfstype=ext4

Объединение сетевых интерфейсов

Список режимов:
mode=0 (balance-rr)
Последовательно кидает пакеты, с первого по последний интерфейс. 
mode=1 (active-backup)
Один из интерфейсов активен. Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. Не требует дополнительной настройки коммутатора
mode=2 (balance-xor)
Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.
mode=3 (broadcast)
Все пакеты на все интерфейсы
mode=4 (802.3ad)
Link Agregation — IEEE 802.3ad, требует от коммутатора настройки. 
mode=5 (balance-tlb)
Входящие пакеты принимаются только активным сетевым интерфейсом, исходящий распределяется в зависимости от текущей загрузки каждого интерфейса. Не требует настройки коммутатора.
mode=6 (balance-alb)
Тоже самое что 5, только входящий трафик тоже распределяется между интерфейсами. Не требует настройки коммутатора, но интерфейсы должны уметь изменять MAC.
Настройка
Очень простая. Вы выбираете режим, втыкаете в коммутатор второй кабель.
Дальше в зависимости от системы, я делал это на Debian Lenny
#apt-get install ifenslave-2.6
Дальше есть 2 варианта:
Вариант №1 Подправить /etc/network/interfaces к примеру так.
iface bond0 inet static
address 10.0.1.5
netmask 255.255.255.0
network 10.0.1.0
gateway 10.0.1.254
up /sbin/ifenslave bond0 eth0 eth1
down /sbin/ifenslave -d bond0 eth0 eth1

и подправить /etc/modprobe.d/arch/i386 примерно так
alias bond0 bonding
options bonding mode=5 miimon=100 downdelay=200 updelay=200
Естественно указать свой режим и настройки сети.
# update-modules
# ifdown eth0 eth1
# ifup bond0
# /etc/init.d/networking restart

Вариант №2 Все настройки через /etc/network/interfaces
iface bond0 inet static
address 10.0.1.5
netmask 255.255.255.0
network 10.0.1.0
gateway 10.0.1.254
bond_mode balance-tlb
bond_miimon 100
bond_downdelay 200
bond_updelay 200
slaves eth0 eth1

Сохраняем и пишем:
update-modules
# ifdown eth0 eth1
# ifup bond0
# /etc/init.d/networking restart