Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
16.11 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

P

 

 

 

to

BUY

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

>> unixoidto BUY

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ВтестепроизводительностиMySQLноваяфряпобеждает

Вноябре2005годабылапредложенаKAMEреализацияIPSec, новэтовремянаосновеKAMEикодаOpenBSDподруководст­ вомСемаЛеффлераужепроводилисьработыпоадаптации IPSecкмногопроцессорномуокружению.Некотороевремя FAST_IPSECбылдоступенввидепатчей.ТеперьKAMEофициальноубран,авFAST_IPSECдобавленаподдержкаIPv6и аппаратногоускоренияшифрования.

Разработчикиучливсевозрастающуюпопулярностьбеспроводныхсетей.Вэтомнаправлениибылапроделананеплохая работа,иврезультатесистемаполучилаполнуюподдержку семействастандартов802.11(Wi-FiиWiMax).

Полностьюотказалисьотутилитыwicontrol,котораяприменяласьдлянастройкиработыбеспроводныхинтерфейсов,

—теперьдляэтихцелейпредложеноиспользоватьболее привычныйifconfig.

Дляsysctlпоявилисьновыепеременные,позволяющие налетууправлятьпараметрамиразличныхподсистемядра. Например, kern.conftxt позволяетпросмотретьсодержи-

моефайлаконфигурациидлятекущейсборкиядра,net.inet. icmp.reply_from_interfaceвключаетотправкуICMPотве-

товсIP,накоторыйпришелпакет,авkern.hostuuidзаписан уникальныйидентификаторузлаUUID.

ТеперьсталовозможнымбезналожениядополнительныхпатчейдинамическивычислитьразмерTCPбуфероввзависимости оттипасетевойактивности.Управлениеосуществляетсячерез рядпеременныхsysctl,начинающихсяс net.inet.tcp.

sendbuf_*иnet.inet.tcp.recvbuf_*:

net.inet.tcp.sendbuf_auto=1 net.inet.tcp.recvbuf_auto=1

Пространствопользователя(akauserland)

Первое, что бросается в глаза в новой версии, это полное обновление прикладного программного обеспечения. Особо можно отметить: KDE 3.5.8, GNOME 2.20.2, X.Org 7.3, GCC 4.2.1, BIND 9.4.2, Sendmail 8.14.2, OpenSSL 0.9.8e. Причем, в GCC по умолчанию включена защита от атак, направленных на переполнение стека (Stack-Smashing Protector).

Доверсии1.0обновленабиблиотекаOpenBSM(OpenSource BasicSecurityModule),реализующаяSunBSM—подсистему аудитасистемныхсобытий,отслеживающуюихвреальном

времени(быларазработанаврамкахпроектаTrustedBSD). Список архитектур не изменился: AMD64, i386, ia64, pc98 и PowerPC, однако сейчас ведутся работы по портированию на ARM и UltraSparc T1, поэтому возможно когда-нибудь мы увидим FreeBSD на наладонных устройствах и Sun Niagara.

СкачатьпродуктможнокакчерезBittorrent(torrents.freebsd. org:8080),такичерезтрадиционныйFTP(ftp://ftp.freebsd. org/pub/FreeBSD).Составобразовнеизменился:первый

—загрузочный,остальные—спакетами,плюсотдельныйобраз сдокументацией.

Процессустановкинепретерпелглобальныхизменений,это всетотжестарыйзнакомыйsysinstall.Хотя,признаться,ожидал увидетьновыйинсталляторfinstall(wiki.freebsd.org/finstall),

имеющийболеедружелюбныйграфическийинтерфейс.Под- робнееонем—смотринаврезке.

Усовершенствована подсистема Linuxulator, которая позволяет запускать бинарные файлы Linux без модификации и потерь на трансляцию системных вызовов одной ОС в другую. Осуществлен переход на Linuх ядро 2.6.16. Однако по умолчанию эта возможность не включена, так как является экспериментальной (по дефолту используется эмуляция 2.4). Но включить просто, для этого устанавливаем значение sysctl переменной compat.linux.osrelease в «2.6.16».

Вутилите freebsd-update,обеспечивающейвсеобновления безопасностизасчетустановкидвоичныхпакетовбезнеобходимостипересборкисистемы,появиласьдополнительнаякоманда upgrade(обновляетсистемудопоследнегорелиза).

Ксожалению,портDtrace,которыйпозволяет«увидеть»процессы,происходящиевнутриоперационнойсистемыипользовательскихприложений,ещенельзяотнестикстабильными полностьюработоспособным.

Заключение

Дажеизтакогобеглогообзоравидно,чтонововведениявверсии7.0носятнекосметический,аглобальныйхарактер.Радует улучшеннаяподдержкамногопроцессорныхсистемнавсех уровняхОСиувеличениеспискаподдерживаемыхустройстви ФС.Администраторывместеспользователямиоценилиновинку иактивнопереходятнаFreeBSDседьмойветки.Надеюсь, теперьитыприсоединишьсякним.z

warning

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

dvd

• В «Руководстве

FreeBSD», которое можно прочитать на сайте проекта (www. freebsd.org/doc), ты найдешь ответы на подавляющее количество вопросов по системе. Причем, оно уже давно переведено на русский язык.

Интересные особенности поддержки сети в FreeBSD

можно узнать из интервью с разработчиками на www. onlamp.com.

Информацию по всем настройкам ZFS можно получить на странице WiKi

wiki.freebsd. org/ZFS.

xàêåð 05 /113/ 08

089

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> unixoid

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

Юрий «bober» Раззоренов

/ zloy.bobr@gmail.com /

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Прорыв сквозьPPP

Настраиваем PPPoE и PPTP подключения в Linux

C появлением высокоскоростных соединений широкое распространение получили подключения по протоколам PPPoE и PPTP. Как правило, документация на сайтах интернет-провайдеров заточена под Windows. Что делать брату-линуксоиду? Не сидеть же, сложа руки. Попробуем разобраться, как настроить клиентский PPPoE/PPTP, взяв в качестве примера дистрибутив

KUbuntu.

Настройка PPPoE соединения

PPPoE(Point-to-PointProtocoloverEthernet)—протоколпередачифрей-

мовPPPчерезEthernetсоединения. Используетсядляподключенияс традиционнойсвязкойлогин/парольипоэтомупопуляренвxDSLитому подобныхсервисах,гденетвстроенныхмеханизмоваутентификации пользователя.

Всовременныхдистрибутивахестьвсе,чтонужнодляработысним(учитывая,чтовядреэтотпротоколподдерживается,начинаясверсии2.3).

Однакокомандой«grep PPP /usr/src/linux/.config»всеравно стоитпроверитьпараметрыядра,относящиесякPPP.

ПодключениепоPPPoEреализованоподобнообычномуPPPсоединениюс использованиемдемонаpppd—такчтоопытмодемныхразбороклишним небудет.ЧтобыустановитьPPPoEсоединение,потребуетсяналичиев системеследующихпакетов:ppp,pppoeиpppoeconf.Поумолчаниюв KUbuntuониужеинсталлированы:

$ dpkg -s pppoeconf Package: pppoeconf

Status: install ok installed

ВRPMдистрибутивахнужноввести«rpm -qa | grep ppp».Следующим шагомнастраиваемEthernetинтерфейсилиставимдрайвердляADSLмодема(иначедальнейшиедействиянеимеютсмысла).НастроитьEthernet можно,зайдяв«СистемныенастройкиНастройкасети».Дляручной настройкиоткрываемфайл/etc/network/interfaces.

$sudomcedit/etc/network/interfaces

# Если IP-адрес назначается динамически с помощью DHCP, прописываем:

iface eth0 inet dhcp

# Статический IP устанавливается так: iface eth1 inet static

address 192.168.0.25 network 192.168.0.0 gateway 192.168.0.1 netmask 255.255.255.0 mtu 1492

Вфайле /etc/resolv.confобязательноуказываемадресхотябыодногоDNSсервера(алучшедвух):

$sudomcedit/etc/resolv.conf

nameserver 111.33.44.55 nameserver 222.44.55.66

Послетого,каквсеготово,переходимкнастройкеклиентскогоPPPoE соединения.Вариантовопятьженесколько.Самыйпростой—ручноере- дактированиедвухфайлов:/etc/ppp/pap-secrets(либоchap-secrets, еслипровайдериспользуетCHAPаутентификацию;формат*-secrets файловодинаков)и/etc/ppp/peers/dsl-provider.Имявторогоис- пользуетсявкачествеаргументакомандыponиможетбытьвыбранолюбое. Всостав(K)Ubuntuдляудобствавключенаутилитаpppoeconf.Запускаем «sudo pppoeconf»—появитсяпсевдографическоеменюнастройки. Следуйуказаниямутилиты,вбольшинствеслучаевпростоподтверждая предлагаемыепоумолчаниюпараметры.Утилитапопытаетсянайтиподхо-

дящийEthernetинтерфейс,используяпакетыPADI(PPPoEActiveDiscovery Initiation),спомощьюкоторыхидетпоискактивныхконцентраторовдосту- па.Далееpppoeconfсохраняеторигинальныйфайлdsl-provider.По- слечеговводимлогинипароль,разрешаем,еслинужно,автоматическое соединениепризагрузкесистемы…вотивсе.Дляподключенияпредлага-

090

xàêåð 05 /113/ 08

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

>> unixoidto BUY

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Настройкиpptpconfig

етсяиспользоватьскрипт/usr/bin/pon.Еслизаглянутьвнутрь,можно увидеть,что,кромепроверкиналичиянекоторыхфайлов,фактически выполняетсявсегооднакоманда«/usr/sbin/pppd call $PROVIDER». В общем виде вызов pon выглядит так:

pon [OPTIONS] [provider] [arguments]

Вкачествеаргументаproviderуказываетсяфайлизкаталога/etc/ppp/ peers.Поумолчаниюиспользуетсяprovider(этоиестьпеременная $PROVIDER).Внашемслучаенабираем:

$pon dsl-provider

Ксожалению,везетневсегда,ипорой(например,приналичиинескольких интерфейсов)приходитсязабуриватьсявконфиги.Ноничегосложногов этомнет.Еслиподключитьсяможнотолькочерезsudo,тоненадовыдумыватьимудрить,простодобавьсебявнужнуюгруппу(вUbuntuинекоторых другихдистрибутивахдляэтихцелейиспользуетсяdip).

Конфиги PPPoE

Начнемссамогопростогофайла /etc/ppp/pap-secrets(илиchap- secrets).Открывего,тынайдешьсвоилогинипарольдлясоединенияв такомвиде(результатработыpppoeconf):

user *

password

 

 

Здесьдостаточнопроверитьправильностьданныхиливписатьстрокусамому,еслиpppoeconfнеиспользовался.Параметрысоединения

описываютсяв/etc/ppp/peers/dsl-provider.Уменяпослеработы pppoeconfонпринялследующийвид:

$sudomcedit/etc/ppp/peers/dsl-provider

noipdefault

# В таблице маршрутизации сделать данное соединение маршрутом по умолчанию

defaultroute replacedefaultroute

hide-password #lcp-echo-interval 30 #lcp-echo-failure 4 noauth

#Восстановить связь в случае разрыва persist

#Использовать максимальный размер передаваемого пакета в 1492 байт

mtu 1492 usepeerdns

Впринципе,всепараметрызаданы,—нонеуказано,скемичемсоеди- няться,атаккакинтерфейсовуменянесколько,возникаетпутаница.Чтобы этоисправить,добавимследующуюстроку:

pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452"

Заглянувпослеработыpppoeconfвфайл/etc/network/interfaces, можнозаметитьпоявлениеновыхстрок:

auto dsl-provider

iface dsl-provider inet ppp provider dsl-provider

# added by pppoeconf auto eth0

iface eth0 inet manual pre-up /sbin/ifconfig eth0 up

Еслипризагрузкесистемынетребуетсяавтоматическоеподключениепо PPPoE,простокомментируемэтистроки.Повторяемпопыткусоединения. Дляконтроляможноввестикоманду:

$ ifconfig ppp0

ppp0 Link encap:Point-to-Point Protocol

inet addr:157.33.34.178 P-t-P:192.168.101.1 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1480 Metric:1

RX packets:283 errors:0 dropped:0 overruns:0 frame:0

TX packets:284 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:3

RX bytes:3004 (2.9 KiB) TX bytes:2744 (2.6 KiB)

За ходом подключения можно следить в системном журнале /var/log/ messages. Для этого в другой консоли перед началом подключения вводим:

$ tail — f /var/log/messages

Возможна ситуация, когда адрес есть, но доступ к ресурсам получить не удается. В этом случае, введя «route -n», убедись, что маршрутизация настроена правильно. Маршрут, помеченный как default, должен показывать на интерфейс ppp0. Если это не так, вводим «route add default ppp0» и проверяем: работает?

xàêåð 05 /113/ 08

091

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

>> unixoid

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОкноtkpppoeизкомплектаRP-PPPOE

Настройка нескольких соединений

Бывает,чтопользователямтребуетсяработатьсразуснесколькими серверами,использующимиPAP(например,PPPoEирезервноемодемное соединение,VPNидругие).Еслилогиндлякаждогосервисаотличается, PPP,какправило,способенсамразрулитьситуацию.Номногиепредпочитаютиспользоватьодинитотжелогиндлявсехсерверов,ккоторым подключаются(надеюсь,хотьпаролиразные).Этоможетвызватьтраблы, посколькудемондолженправильновыбратьнужнуюстрокуизфайлаpapsecrets дляаутентификации.Емунужнопомочь.Дляначалавфайле /etc/ppp/pap-secretsзнакастериска'*'заменяемусловнымименем сервера.Примернотак:

user server1 password1 user server2 password2

Создаемдвафайла,взявзаоснову dsl-provider.Вкаждомизних припомощипараметровnameиremotenameзадаемлогинисервердля подключения.

name user remotename server1

Теперьпростоуказываемнужныйфайлвкачествеаргументаpon.Этоне единственныйспособ.Можно,каксоветуютmanиHOWTO,использовать

МагияMTUиMSS

ПараметрMTU(MaximumTransmitUnit)отвечаетзамаксимальный размерпередаваемогопакета.Еслиразмерпакетабудетбольше,чем можетпропуститьмаршрутизатор,тоонбудетразделен,чтосразу скажетсянаскоростиипропускнойспособности.Еслипараметрне указатьпринудительно,значениебудетвыставленоавтоматически и,увы,невсегдарационально.Рассчитыватьегоследуеттак.Макси- мальныйразмерфреймаEthernet—1518байт,изних14—заголовок и4—контроль(тоестьполезнаянагрузкаравна1500байт).Далее PPPoEотбираетеще6байт,аPPP—2.ВитогезначениеMTUдля PPPoEдолжносоставлятьнеболее1492.

ПриустановленииTCPсоединениякаждаясторонавыставляет параметрMaximumSegmentSize(MSS),определяющиймаксимальныйразмерTCPсегментанавсемпути.Поумолчаниюегозначение берется,какMTUдляисходящегоинтерфейсаминусразмерзаголовковTCPиIP(40).Исходяизэтого,максимальноезначениеMSSдля

Ethernetбудетравняться1460,адляPPPoE—1452.

Настройкиpppoeconf

свойконфигoptionsиподключатьегоприпомощипараметраfile.Этот вариантрассмотримчутьдальше,принастройкеPPTP.

Пакет rp-pppoe

ВдистрибутивахвродеMandriva,VectorLinuxидругихдлянастройкиPPPoE предлагаетсяболеепростойвариантсиспользованиемпакетаRP-PPPoE.

ВрепозитарииUbuntuонотсутствует,ноегоможноустановитьсамостоятельно.Темболее,чтопроцесссложностейневызывает.

Качаемпоследнююверсиюпоссылкенастраницеwww.roaringpenguin. com/products/pppoe.Распаковывамtar.gz-архив,заходимвнутрькаталога ивводим:«./go-gui»илипросто«./go»,еслиперваякомандаоткажется работать.Далееотвечаемнастандартныевопросы:логин,интерфейс, активацияпризагрузке,DNS,пароль,настройкимежсетевогоэкрана.В последнемслучаепредлагаетсянавыбортриварианта:NONE(отключен), STANDALONE(применяем,когдакомпьютеродин)иMASQUERADE(когда компьютериспользуетсявкачествесетевогошлюза).Поокончанииработы скриптавыводитсяитог:

** Summary of what you entered ** Ethernet Interface: eth1

User name: user Activate-on-demand: No Primary DNS: 111.33.44.55 Secondary DNS: 222.44.55.66 Firewalling: STANDALONE

Наэтом,собственно,установказакончена.Послеэтоговсистемеможно обнаружитьнесколькоскриптовиутилит: pppoe-relay,pppoe-setup, pppoe-start,pppoe-stop,pppoe-connect, pppoe-server,pppoe- sniff,pppoe-status,pppoe-wrapperиtkpppoe.Кстати,доверсии

3.6именаскриптовначиналисьсприставкиadsl-,поэтомувболееранних дистрибутивахследуетискатьименноих.ДаистарыеHOWTOтоженужно читатьсэтойпоправкой.

Чтобыинициироватьсоединение,достаточнонабратьвконсолиpppoe- start;дляостанова—pppoe-stop;чтобыпросмотретьстатистику

pppoe-status.Асновазапуститьконфигурационныйскриптможнос помощьюpppoe-setup.Дляудобстванастройкииподключенияпредла- гаетсясвойграфическийфронтэнд—tkpppoe.

Подключаемся по PPTP

НастройкаVPNподключенияпопротоколуPPTP(Point-to-PointTunneling Protocol)вомногомнапоминаетподключениепоPPPoE.Донедавнеговре- мени,из-заопасениялицензионныхпреследованийпоповодупротокола MPPE,вLinuxотсутствоваланормальнаяподдержкаPPTP,чтовызывало проблемыитребовалолишнихтелодвижений.Полнаяподдержкаэтого протоколапоявилась,начинаясверсии2.6.13.Официальнаябыланачатас

092

xàêåð 05 /113/ 08

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

>> unixoidto BUY

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

2.6.14,ав2.6.15ужевключенмодульшифрованияPPPMPPE. Сначала,чтобыбылопонятней,разберемручнуюнастройку,а потомпосмотримнаGUI. Дляпоискаврепозитариипакетов, относящихсякpptp,вводим:

$ sudo apt-cache search pptp

pptp-linux — Point-to-Point Tunneling Protocol (PPTP) Client

knet — The Knet is a frontend to pppd. kvpnc — vpn clients frontend for KDE network-manager-pptp — network management framework (PPTP plugin)

КлиентскуючастьобеспечиваетпроектPPTPClient

(pptpclient.sourceforge.net).Поддерживаетсянетолько

Linux,нои*BSD.Этотклиентсовместимсовсемисерверами,

работающимипопротоколуPPTP:WindowsVPN,LinuxPopTop, CiscoPIXинекоторымидругими.Клиентнеобновлялсяуже околодвухлет,поэтомуможнобезтенисомненияустанавливатьто,чтоестьврепозитарии.

$sudo apt-get install pptp-linux

Вкачестверекомендуемыхпакетовпредлагался«kernel- patch-mppe».Надосказать,чтовмоемслучаевсеработало ибезнего,ноприпоявлениипроблемвспомнионем.Имеет смыслпоставитьсамоепоследнееядро,гдеэтотпротоколподдерживаетсяизначально.

Отмечу,кстати,предусмотрительностьребятизCanonical.Все нужныепакетыдляподключенияпоPPTPнаходятсянаCD-диске (которыйтебяипопросятвставитьвприводпослевводакоман- ды).ПоэтомуеслиPPTP—этоединственнаясвязьсвнешним миром,добыватьнужныепакетыокольнымипутяминепридется. Еслидисквкэшеотсутствует,добавьего,набравкоманду«sudo apt-cdrom add».ПозапросувставьCDинажми<Enter>. Теперьприступаемкредактированиюконфигурационного файла:

$sudomcedit/etc/ppp/options.pptp

lock noauth nobsdcomp nodeflate

# Отключаем ненужные проверки refuse-pap

Параметрыядра

refuse-eap #refuse-chap refuse-mschap persist

# Количество попыток подключения в случае обрыва соединения

maxfail 10 defaultroute replacedefaultroute

Вфайл/etc/ppp/chap-secrets заносимлогинипароль:

user pptp password *

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

domain\\user pptp password *

Исоздаемописаниеподключения,аналогичнотому,как делалидляPPPoE:

$sudomcedit/etc/ppp/peers/pptp

# Указываем адрес PPTP сервера

pty "pptp 10.100.0.1 --nolaunchpppd" connect /bin/true

name user

#Идентификатор из второго поля в chap-secrets remotename pptp

#Подключаем файл настроек

file /etc/ppp/options.pptp #require-mppe-128 require-mppe-40

ipparam pptp

Настройкиготовы.Теперьподключаемся:

$pon pptp

Исмотримвыводкомандыifconfig.Еслисоединениеустановленоиадресполучен,тосчитаем,чтонастройкапрошла успешно.НообычноPPTPтребуетбольшевозни,чемPPPoE.В случаенеудачивыполняем:

info

В ядро Linux 2.6.15

включен модуль шифрования PPP MPPE для подключения к PPTP серверам.

Пользователи Mandriva могут найти настройки PPPoE

иPPTP в Центре Управления Mandriva Linux, выбрав «Сеть

иИнтернет»

«Настройка нового сетевого интерфейса

(LAN, ISDN, ADSL)».

Не забывай сохранять файлы из /etc/ppp при обновлении или установке другого дистрибутива.

В Ubuntu и некоторых других дистрибутивах для выхода в Сеть пользователь должен входить в группу dip.

Настройку GNU/ Linux для работы с PPPoE и VPN мы рассматриваем на

примере дистрибутива KUbuntu. Но учитывая, что база у всех одна, сказанноебудетдейст­ вительно и в любом другом дистрибутиве.

О настройке PPPoE

в OpenBSD можно прочитать в статье «Нарезаем трафик ломтиками», опубликованной в ][акере

#087.

xàêåð 05 /113/ 08

093

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> unixoid

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

KVpnc—удобнаяпрограммадляработысVPNразныхтипов

 

 

 

 

 

отключаем избыточные методы аутентификации. Если

 

 

 

 

 

хочешь, в Routing укажи DNS сервер и адреса, которые

 

 

могут использовать это VPN соединение.

НастройкиPPPoEиPPTPвЦентреУправленияMandriva

 

 

 

 

ПроектPPTPClientпредлагаетутилитуpptpconfigдляна-

 

 

 

 

стройкиподключения.ВрепозитарииUbuntuонаотсутствует.

 

 

$ pon pptp debug dump logfd 2 nodetach

Чтобыустановитьее,добавьинформациюоновомрепозита-

 

 

 

 

риив/etc/apt/sources.list:

 

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

 

 

 

 

бок.Еслиестьнеобходимостьвавтоматическомподключении

 

deb http://quozl.netrek.org/pptp/pptpconfig

 

призагрузкесистемы,правим/etc/network/interfaces:

 

./

dvd

 

 

 

 

 

 

 

 

 

 

Подробно прото-

 

$sudomcedit/etc/network/interfaces

Обновляемсписокпакетов,устанавливаемизапускаем:

кол PPPoE описан

 

 

 

 

 

 

auto tunnel

 

 

в RFC 2516. Кроме

 

iface tunnel inet ppp

 

$ sudo apt-get update

того, полезной будет

 

provider pptp

 

$ sudo apt-get install pptpconfig

информация на WiKi

 

 

 

 

$ sudo pptpconfig

 

Давим батоны

странице ru.wikipedia.

 

 

 

 

Появится окно программы, внизу которого расположено

 

org/wiki/PPPoE.

Длянастройкииработытыпредпочитаешьпрограммыс

 

графическиминтерфейсом?Тогдаслушай.Пользователи

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

 

MandrivaмогутнайтинастройкиPPPoEиPPTPвЦентреУправ-

соединения и адрес сервера. Перейдя в Routing, можно

 

ленияMandrivaLinux,выбрав«СетьиИнтернет»«Настрой-

изменить таблицу маршрутов и, например, разрешить

 

кановогосетевогоинтерфейса(LAN,ISDN,ADSL)».Учти,что

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

 

настройкаPPTPнаходитсявменюDSLвместесPPPoE,анев

умолчанию берутся системные настройки DNS серверов,

 

VPN,гдеееобычноначинаютискать.

переопределить их для туннеля можно во вкладке DNS. В

 

ВKUbuntuустанавливаемпакеты:

Encryption включаем (Require) используемый провайде-

 

 

 

 

ром алгоритм шифрования. И, наконец, в Miscellaneous

 

 

$ sudo apt-get install network-manager-pptp

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

 

 

kvpnc

программы, переподключение при потере соединения и

 

 

 

 

ввести дополнительные параметры для pppd и pptp. По

 

Первыйпакет—этомодулькKNetworkManager.Признаюсь,

 

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

 

никогдаегонелюбилинеюзал,наверное,сказываетсядолгое

которых говорилось выше. Выбираем нужное соединение и

 

сидениевслаке,нотебе,может,онипонравится.Чтобыуви-

нажимаем Start.

 

детьнастройкиVPN,послеустановкипакетанужноперезапус-

Программа KVpnc (home.gna.org/kvpnc) является удоб-

 

титьNetworkManager:

ным фронтэндом для многих типов VPN. Она поддержи-

 

 

 

 

вает Cisco VPN, IPSec, PPTP, OpenVPN, L2TP и Vtun. Все

 

 

$ sudo /etc/dbus-1/event.d/25NetworkManager

настройки выполняются при помощи простого мастера,

 

 

restart

вызываемого через «Profile New Profile (Wizard)»,

 

 

* Restarting network connection manager

который в пошаговом режиме поможет создать новое

 

 

NetworkManager [ OK ]

подключение. Так, на шаге «Select the type of your VPN»

 

 

$ sudo /etc/dbus-1/event.d/26NetworkManagerDi

выбираем тип VPN (в нашем случае — Microsoft PPTP). На

 

 

spatcher restart

следующем шаге отмечаем дополнительные параметры

 

 

* Restarting network events dispatcher

PPTP, вводим логин и пароль. Выбираем из раскрываю-

 

 

NetworkManagerDispatcher [ OK ]

щегося списка сетевое устройство, с помощью которого

 

 

 

 

должно производиться подключение. В окне «Network

 

Теперь все просто. Выбираем «Параметры Configure» и

 

route options» указываем: «Заменять маршрут по умол-

 

нажимаем «Добавить». В появившемся окне вводим имя

чанию».

 

соединения (также будет именем файла в peers), вводим

Вот,собственно,ивсепонастройкамPPPoEиPPTPвсовре-

 

IP-адрес или имя сервера. Во вкладке Authentication

менныхдистрибутивах.Удачи!z

094

xàêåð 05 /113/ 08

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> unixoid

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Денис Колисниченко

/ dhsilabs@mail.ru, www.dkws.org.ua /

Вовласти суперблока

Файловая система Linux в подробностях

Чтобы разобраться, как работает ОС Linux, прежде всего, нужно понять, как она управляет файлами. Поэтому на повестке дня у нас изучение архитектуры файловой системы Linux. А полученные теоретические знания мы разбавим практическими примерами. Что называется, на каждый день!

Архитектура файловой системы

Прежде,чемприступитькрассмотрениюархитектурыфайловойсистемы Linux,нужноответитьнавопрос,чтотакоефайловаясистема(ФС).Впри- родеможновстретитьразличныеопределения,например,ФС—этоспособ представленияинформациинаносителеданных.ИлиФС—частьопера- ционнойсистемы,обеспечивающаявыполнениеоперацийнадфайлами. Ноболееточнымбудетобъединитьэтипонятия.Ведь,грубоговоря,любая файловаясистемасостоит,минимум,издвухуровней—уровняпредставле- нияданныхинаборасистемныхвызововдляработысданными.

ЗачастуюОСможетработатьсразличнымифайловымисистемами,например,сосновнойфайловойсистемой(используетсянажесткомдиске) исфайловойсистемойCD—ISO9660.ПоэтомуОСдолжнаобеспечить

приложениямстандартныйинтерфейс,позволяющийобращатьсякфайлам наразныхФСпрозрачно.Программистнедолженкаждыйразвникатьв тонкостифайловойсистемызаново.Например,вLinuxдляоткрытияфайла используетсясистемныйвызов open().Программапростовызывает open(),передавемуимяфайла,анакакойФСрасположенэтотфайл—не сутьважно.

Теперьпосмотринарисунок1.Нанемизображеновсесказанноевыше. Зеленымотмеченпользовательскийуровень,ажелтым—уровеньядра. Приложениеможетиспользоватьфункцииglibc(библиотекаGNUC)или женапрямуюобратитьсяксистемнымвызовамядра—тутужкакбудетугод- нопрограммисту.Использоватьфункцииglibcудобнее,но,вызываянепосредственносистемныевызовы(например,open(),read(), write(), close()),можнонемногоповыситьпроизводительностьприложения

—ведьтыминуешьglibc,котораяиспользуеттежесистемныевызовы.

VFS—этовиртуальнаяфайловаясистема.Именноонапозволяетдобиться существующегосейчасуровняабстракции.Каждаяфайловаясистема имеетсвоиособенности,иеслибынебылоVFS,топришлосьбыразрабатыватьразныеверсиисистемныхвызововдлякаждоготипаподдерживаемой файловойсистемы(например,open_ext3()—дляоткрытияфайла,на- ходящегосянафайловойсистемеext3,илиopen_vfat()—дляФСVFAT). Другимисловами,VFSделаетсистемныевызовынезависимымиоттипа используемойфайловойсистемы.

Копаем глубже

Рисунок1—этообщеепредставлениеофайловойсистемеLinux.Настало времякопнутьглубже.Рассмотримлогическуюструктуруфайловойсистемы ext3.Физическижесткийдискразбитнасекторыразмером512байт.Первый сектордисковогоразделавлюбойфайловойсистемесчитаетсязагрузочной областью.Впервичномразделеэтаобластьсодержитзагрузочнуюзапись

—фрагменткода,которыйинициируетпроцессзагрузкиоперационнойсис- темыпризапуске.Надругихразделахобластьнеиспользуется.Остальные секторыобъединенывлогическиеблокиразмером1,2или4Кб.Логический блокестьнаименьшаяадресуемаяпорцияданных:данныекаждогофайла занимаютцелоечислоблоков.Блоки,всвоюочередь,объединяютсяв группы.Группыблоковиблокивнутригруппынумеруютсяпоследовательно, начинаяс«1».

Разделдиска,накоторомсформированафайловаясистемаext3,может бытьпредставлентакойсхемой(рис.2).

Суперблокслужитначальнойточкойфайловойсистемыихранитвсюинформациюоней.Онимеетразмер1024байтаирасполагаетсяпосмеще-

096

xàêåð 05 /113/ 08

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

>> unixoidto BUY

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

int s_need_sync_fs;

...

}

нию1024байтаотначалафайловойсистемы.Вкаждойгруппе блоковондублируется,чтопозволяетбыстровосстановитьего послесбоев.

Всуперблокеопределяетсяразмерфайловойсистемы, максимальноечислофайловвразделе,объемсвободного пространства—исодержитсяинформацияотом,гдеискать незанятыеучастки.ПризапускеОСсуперблоксчитываетсяв память,ивсеизмененияфайловойсистемывначаленаходят отображениевкопиисуперблока(надискзаписываются толькопериодически).Этопозволяетповыситьпроизводительностьсистемы,таккакмногиепользователиипроцессы постояннообновляютфайлы.Сдругойстороны,приостанове системысуперблокобязательнодолженбытьзаписаннадиск, иэтонедаетвырубитькомпьютерпростымвыключением питания. Иначеприследующейзагрузкеинформация,записаннаявсуперблоке,окажетсянесоответствующейреальному состояниюфайловойсистемы.

Послесуперблокаследуетописание(дескриптор)группыблоков.Хранящаясявнеминформацияпозволяетнайтибитовые картыблоковииндексныхдескрипторов,атакжетаблицу индексныхдескрипторов.

Структурусистемногоблокаможнонайтив/usr/src/ linux/include/linux/fs.h:

struct super_block {

struct_head s_list; // двусвязный спи-

сок всех смонтированных ФС unsigned long s_blocksize;

struct file_system_type *s_type; struct super_operations *s_op; struct semaphore s_lock;

Битовойкартойблоков(blockbitmap)называетсяструктура, каждыйбиткоторойпоказывает,отведенлитакойжепосчету блоккакому-либофайлу.Значение«1»показывает,чтоблок занят.Этакартаслужитдляпоискасвободныхблоковвтех случаях,когданадовыделитьместоподфайл.Битоваякарта индексныхдескриптороввыполняетаналогичнуюфункциюпо отношениюктаблицеиндексныхдескрипторов:показывает, какиеименнодескрипторызаняты.

Каждомуфайлусоответствуетодинитолькоодининдексный дескриптор(inode),которыйидентифицируетсясвоимпоряд- ковымномером—индексомфайла.Виндексномдескрипторе хранятсяметаданныефайла.Срединих—всеатрибутыфайла, кромеегоимени,иуказательнаданныефайла.

Дляобычногофайлаиликаталогаэтотуказательпредставляет собоймассивизпятнадцатиадресовблоков.Первыедвенад­ цатьадресовявляютсяпрямымиссылкаминаномераблоков, вкоторыххранятсяданныефайла.Еслиданныенепомещаютсявдвенадцатьблоков,товключаетсямеханизмкосвеннойадресации.Следующийадресвэтоммассивеявляется косвеннойссылкой,тоестьадресомблока,вкоторомхранится списокадресовследующихблоковсданнымиизэтогофайла. Сколькоблоковсданнымиможнотакадресовать?Адресблока занимает4байта,блок,какужесказано,имеетразмеры1,2 или4Кб.Значит,путемкосвеннойадресацииможноразмес- тить256—1024блока.

Аеслифайлещедлиннее?Следующийадресвмассивеуказателеуказываетнаблокдвойнойкосвеннойадресации (doubleindirectblock).Блоксодержитсписокадресовблоков, которые,всвоюочередь,содержатспискиадресовследующих блоковданных.

Наконец,последнийадресвмассиве-указателезадаетадресблока тройнойкосвеннойадресации,тоестьблокасоспискомадресов блоков,которыеявляютсяблокамидвойнойкосвеннойадресации! Покаостаетсянепонятным,гденаходитсяимяфайла,если егонетнисредиданныхфайла,нисредиметаданных.В*nix- подобныхсистемахимяфайла—атрибутнесамогофайла, афайловойсистемы,понимаемойкаклогическаяструктура каталогов.Имяфайлахранитсятольковкаталоге,ккоторому

файлприписан,ибольшенигде.Следствияэтоголюбопытны. Во-первых,одномуиндексномудескрипторуможетсоответство- ватьлюбоеколичествоимен,приписанныхкразнымкаталогам, ивсеониявляютсянастоящими.Количествоимен(жестких ссылок)учитываетсявиндексномдескрипторе.Именноэто количествоможноувидетьпокоманде«ls—l».Во-вторых,уда- лениефайлаозначаетпростоеудалениезаписионемизданных каталогаиуменьшениенаединицусчетчикассылок.В-третьих, сопоставитьимяможнотолькономеруиндексногодескрипторавнутриоднойитойжефайловойсистемы.Именнопоэтому нельзясоздатьжесткуюссылкувдругуюфайловуюсистему (символическую—можно,унеедругоймеханизмхранения). Самкаталогтакимжеобразомприписанксвоемуродительскомукаталогу.Корневойкаталогвсегдазаписанвиндексный дескрипторсномером«2»(номер«1»отведендляспискаадресовдефектныхблоков).Вкаждомкаталогехранитсяссылка нанегосамогоинаегородительскийкаталог—этоиестьпсев- доподкаталоги«.»и«..».Такимобразом,количествоссылокна каталогравноколичествуегоподкаталоговплюсдва!

Данныекаталогапредставляютсобойсвязныйсписокс записямипеременнойдлиныивыглядятпримернотак,как показанонарисунке3.

Акакжефайлыфизическихустройств?Онимогутнаходитьсяв техжекаталогах,чтоиобычныефайлы:вкаталогенетникаких

info

VFS действует как корневой уровень интерфейса файловой системы. VFS следит за всеми поддерживаемыми и смонтированными на данный момент файловыми системами.

Узел inode хранит

в себе все метаданные для управления объектами файловой системы.

Cтруктуры dentry используются для осуществления преобразования между названиями и узлами inode,длячегосущест­ вует кэш директорий, в котором хранятся последние использованные записи, а также отношения между папками и файлами для обхода файловых систем.

Буферный кэш буферизирует запросы между файловыми системами и блочными устройствами.

Дубликаты суперблока используются при восстановлении файловой системы после сбоев.

В статье «Через революцию к эволюции», опубликованной в журнале ][акер #095, можно прочитать историю создания линуксовых файловых систем.

xàêåð 05 /113/ 08

097

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> unixoid

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

 

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.2.Структурафайловойсистемы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# dd if=/dev/zero of=fs.img bs=1k count=30000

 

 

 

 

 

 

 

 

 

 

 

 

Рис.1.Архитектурафайловойсистемы

 

 

 

Командаddчитаетданныеизпсевдоустройства /dev/zeroизаписывает

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ихвфайл fs.img.Вкачестведанныхбудетпотокнулей,причемнечисел

 

 

 

 

 

данных,говорящихопринадлеж-

 

ноль(ANSI-код48),анеотображаемыхсимволовNULL(ANSI-код0)!Данные

 

 

 

 

 

ностиименифайлунадискеили

 

читаютсяизаписываютсяблокамипо1Кб(bs=1k),аобщееколичество

 

 

 

 

 

устройству.Разница—науровне

 

блоковравно30000.Такимобразом,навыходеполучаемфайлразмером

 

 

 

 

 

индексногодескриптора.Если

 

~30Мб,заполненныйсимволамиNULL.

 

 

 

 

 

инодеобычногофайлауказывает

 

Командойlosetupпревратимнашфайлвблочноеустройство:

 

 

 

 

 

надисковыеблоки,гдехранятсяего

 

 

 

 

 

 

 

 

 

данные,товинодефайлаустройст-

 

# losetup /dev/loop0 fs.img

 

 

 

 

 

 

васодержитсяуказательнасписок

 

 

 

 

 

 

 

 

 

 

Теперьмыможемобращатьсяк /dev/loop0,каккобычномублочному

 

 

 

 

 

драйверовустройстввядре—тот

 

 

 

 

 

 

элементсписка,которыйсоответ-

 

устройству(блочнымназываетсяустройство,обменданнымискоторым

 

 

 

 

 

ствуетстаршемуномеруустройства

 

производитсяблоками,например,секторамидиска).

 

 

 

 

 

(рис.4).

 

Создадимфайловуюсистемунаустройстве /dev/loop0спомощьюкоманды

 

 

 

 

 

 

 

 

mke2fs:

 

 

 

 

 

 

Монтирование

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Чтобыполучитьдоступкфайлами

 

# mke2fs -c /dev/loop0 30000

 

 

 

 

 

 

каталогам,находящимсянадругих

 

 

 

 

 

 

 

 

 

 

Всеготоводлямонтированиясозданнойфайловойсистемы!Мыподмонти-

 

 

 

 

 

разделахжесткогодискаилина

 

 

 

 

другихносителях,нужнопримон-

 

руемееккаталогу /mnt/fs,которыйнужносоздатьзаранее:

 

Рис.3.Структуракаталогавext3

 

 

 

 

 

 

тироватьихккорневойфайловой

 

 

 

 

 

 

 

 

 

системе.Длямонтированияфай-

 

# mkdir /mnt/fs

 

ловойсистемыпредназначенапрограммаmount,дляразмонтирования

 

# mount -t ext2 /dev/loop0 /mnt/fs

 

—umount.Общийформатвызоваследующий:

 

Послеэтогоможноработатьскаталогом /mnt/fsкаксобычнымкаталогом

 

 

 

 

 

 

 

 

 

# mount — t тип_ФС устройство точка_монтирования

 

файловойсистемы.Никакихограниченийнет.Внутриэтогокаталогамы

 

 

 

 

 

 

 

 

можемсоздатьещеодинпустойфайлитожепревратитьеговфайловую

ПослемонтированияФСдобавляетсявсписоксмонтированныхфайловых

 

систему,азатемподмонтировать.

системвядре:

 

 

 

Дляупрощенияпроцессавместокомандыlosetupможноприменить

 

 

 

 

 

 

 

 

параметр'-o loop'командыmount,например:

 

struct vfsmount {

 

 

 

 

 

 

 

struct list_head mnt_hash;

 

# mount -o loop -t ext2 fs.img /mnt/fs

 

 

struct vfsmount *mnt_parent;

 

 

 

 

 

 

Дляразмонтированияфайласфайловойсистемой,какобычно,используем

 

struct dentry *mnt_mountpoint;

 

 

struct dentry *mnt_root;

 

umount:

 

struct super_block *mnt_sb;

 

 

 

 

 

struct list_head mnt_mounts;

 

# umount /mnt/fs

 

 

struct list_head mnt_child;

 

 

 

 

 

 

Далееследуетудалитьустройство /dev/loop0:

 

atomic_t mnt_count;

 

 

 

 

int mnt_flags;

 

 

 

 

 

 

 

char *mnt_devname;

 

 

 

# losetup -d /dev/loop0

 

 

struct list_head mnt_list;

 

 

 

 

 

 

Alcohol и UltraISO средствами Linux!

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперьнемногопрактики.Например,ddможноиспользоватьнетолькодля

Последняяструктураmnt_listиестьсписоксмонтированныхфайловых

 

созданияпустыхфайлов,ноидляснятияобразовсCD/DVD-дисков:

систем.Пользовательможетпросмотретьеговфайле/etc/mtab.

 

 

 

 

 

 

 

 

 

 

 

 

# dd if=/dev/cdrom of=~/image.iso

 

 

Особые операции с файловой системой

 

 

 

 

 

 

ДаннаякомандасоздастобразCD-дискаизапишетеговдомашнийкаталог

СоздатьфайловуюсистемуLinuxможнонетольконафизическомносителе

 

данных,ноивобычномфайле.Дляначаланужносоздатьпустойфайл:

 

пользователяподименем image.iso.

 

 

 

 

 

 

 

 

 

 

 

098

xàêåð 05 /113/ 08

Соседние файлы в папке журнал хакер