книги хакеры / журнал хакер / 125_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
NOW! |
r |
|
|
|
|
|
|
NOW! |
r |
|||||||||||
|
|
|
|
|
BUY |
>>m |
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
SYN/ACK |
|
|
|
|
|
to |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
m |
||||
w Click |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
o |
|||||||||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
|
p |
df |
|
|
|
|
e |
|
||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
g |
|
|
|
||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
-xcha |
|
|
ЕВГЕНИЙ «J1M» ЗОБНИН |
|
|
|
|
|
-x cha |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
/ ZOBNIN@GMAIL.COM / |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Аренда |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
отсобственника |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
ПоднимаемсервиспосдачеварендувиртуальныхFreeBSD-серверов |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
СегоднямыувидимвозможностиFreeBSD jail внескольконеобычном |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
свете– создадимсервиспосдачеварендувиртуальныхFreeBSD-ма- |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
шин. Онбудетполностьюавтоматизированным, позволитиспользо- |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
ватьразныеверсиивиртуальныхокруженийнаоднойфизической |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
машинеиобособленныенастройкидлякаждогосервера. Ивсеэто— |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
спомощьюнесколькихпростыхшелл-скриптов. |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
ОДИНИЗСПОСОБОВПОДНЯТЬ |
простозагнется,когдаколичествовиртуальных |
/usr/jailbase/FreeBSD-версия. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
SYN/ACK |
|
|
|
$$$ ВКРИЗИСНОЕВРЕМЯВиртуальная |
серверовперевалитзапервыйдесяток.Поэтому |
2. Подготавливаемнаборскриптов,которые |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
FreeBSD-машина—этонечтоиное,какпол- |
передразвертываниеминаймомSEO-шников |
будутуправлятьвиртуальнымисерверами(со- |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
нофункциональноеjail-окружение,которому |
необходимотщательнопродуматьбудущую |
здание/удаление,запуск/остановкаит.д.) |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
>> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
выделенглобальномаршрутизируемыйIP-адрес. |
инфраструктуру.Дляначаласформулируем |
3.Пишеминициализационныйскрипт,который |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
Задумкасервисавтом,чтобыраздаватьтакие |
требованиякнашемусервису: |
будетзапускатьвсесуществующиеокружения. |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
окружениянаманерномероввотеле.Клиент |
1.ВыделенныйIP-адресидоменноеимядля |
КромесамогоFreeBSD-окружения,япоместилв |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
заходитнасайт,заполняетнеобходимыеполя |
каждогоокружения.Имявыбираетсяклиентом |
каталог/usr/jailbaseещенесколькокаталогови |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
формы,переводитчутокWMZнанашкошелеки |
вовремязаполненияформынанашемсайте,а |
конфигурационныхфайлов,необходимыхдля |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
получаетвответIP-адрессвоегосервера,домен |
IP-адресизвлекаетсяизспециальногофайла. |
управлениявиртуальнымисерверами: |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
N-огоуровняипароль/ключкssh-сервису.После |
2. Полнаясвободаклиентавотношенииjail- |
•/usr/jailbase/FreeBSD-версия—чистаясборка |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
чегоонволенделатьсосвоимокружениемвсе, |
окружения.Этозначит—никакихunionfsи |
FreeBSD,копируетсявкаждоеокружениепри |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
чтодушезаблагорассудится—ровнодотого |
nullfsдлявсего,кромеархивапортов.Вовремя |
егосоздании. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
момента,поканенаступитвремясъезжать,то |
созданияновогосервераокружениеполностью |
•/usr/jailbase/distfiles-версия—монтируется |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
естьистечетсрокаренды,указанныйклиентом |
копируетсяизспециальногокаталога. |
к/usr/ports/distfilesкаждогоокруженияпри |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
водномизполейрегистрационнойформы.По |
3. Общиекаталоги/usr/ports/distfilesи/ |
помощиnullfs. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
истечениюэтогосрокасерверостанавливаетсяи |
usr/ports/packagesдлявсехокружений,чтобы |
•/usr/jailbase/packages-версия—монтируется |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
удаляется. |
порт,загруженныйоднимизклиентов,автома- |
к/usr/ports/packagesкаждогоокруженияпри |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Идеявиртуальныхотелейдалеконеноваи,по |
тическибылдоступендругим. |
помощиnullfs. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
сути,представляетсобойпример«Облачнойоб- |
4.Автоматизированноесоздание,удаление, |
•/usr/jailbase/db—базаданныхjail-окруже- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
работкиданных»(en.wikipedia.org/wiki/Cloud_ |
запускимониторингсерверов. |
ний.ВпервойколонкеперечисленыIP-адреса |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
computing),когданеобходимоеклиенту |
5.Поддержкаразныхверсийвиртуальных |
всехокружений,вовторой—базовыйкаталог |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
программноеобеспечениепредоставляется |
FreeBSD-серверовнаоднойфизическоймашине. |
(например,/usr/jail),втретьей—сетевой |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
каксервис.Чтобыорганизоватьсвойбизнеспо |
6.Возможностьбыстрогопереносавиртуаль- |
интерфейс,вчетвертой—доменноеимя,в |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
сдачеварендувиртуальныхFreeBSD-серверов |
ногосерверанадругойсетевойинтерфейсили |
пятой—версия,вшестой—e-mailвладельца, |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
оттебяпотребуетсяналичиеN-гоколичества |
äèñê. |
вседьмой—типаккаунта,ввосьмой—время |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
белыхIP-адресов(поодномунакаждыйвирту- |
7.Ежедневныйбэкапвиртуальныхсерверов. |
истечениястрокаарендывформатеГГММДДЧ- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
альныйсервер),домен,закрепленныйзаодним |
8.Доступпоsshсаутентификациейнаоснове |
ЧММ,вдевятой—состояние. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
изних,атакжебазовоепониманиепринципов |
ключей.Ключгенерируетсявовремясоздания |
•/usr/jailbase/defaults—дефолтовыезначения |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
работыFreeBSD. |
виртуальногосервераиотдаетсяклиентупоhttps. |
дляразличныхполейконфигурационногофайла. |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
9.Разныетипыаккаунтов:trial—длядвухднев- |
•/usr/jailbase/conf/—каталогснастройками |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
НЕМНОГОТЕОРИИ, ИЛИСФОРМУЛИРУЕМ |
ногоиспытания,base—обычный,extra,vipит.д. |
иограничениямидляразныхтиповаккаунтов: |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
ТРЕБОВАНИЯПользуясьзнаниями,почерп- |
Теперьподумаемобинфраструктуресервиса |
файлыtrial,base,extra,vip,которыебудутпрочи- |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
нутымиизпрошлоймоейстатьи,организовать |
иотом,какреализоватьвсеперечисленные |
таныскриптомзапускавиртуальногосервера. |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
сервиснетакужисложно.Окруженияjail |
требованияиоставитьзаделнабудущее,тоесть |
Файлdb—базаданныхдлявсехвиртуальных |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
подкупаютсвоейпростотойилегкостьюразвер- |
обеспечитьвозможностьдобавленияновых |
сервероввформатеpasswd(поля,разделенные |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
тывания:несколькоскриптов-обвязок—идело |
функцийвслучаенеобходимости.Последолгих |
двоеточием).Девятоеполе«состояние»пред- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
сделано!Воттолькодолготакойсервиснепротя- |
размышленийяпришелкварианту,которыйне |
назначенодляупрощенияадминистрирования |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
нет.Администраторыначнутплеватьвмонитор |
тольконагляденипрост,ноидостаточнолегокв |
серверовиможетприниматьследующиезначе- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
навторойденьработы,клиентызавалятжало- |
реализации: |
ния:none—несуществует,disabled—временно |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
бамионизкойпроизводительности,асервер |
1. СобираемFreeBSD-окружениевкаталог |
отключен,ok—окружениесозданоиготово |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
128 |
|
|
XÀÊÅÐ 05 /125/ 09 |
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
|
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
NOW! |
r |
|
|
|
|
|
|
|
NOW! |
r |
|||||||||||
|
|
|
|
|
BUY |
>>m |
|
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
SYN/ACK |
|
|
|
|
|
to |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
m |
|||||
w Click |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
o |
||||||||||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
|
|
p |
df |
|
|
|
|
e |
|
||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
g |
|
|
|
||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
Вывод jls для пяти виртуальных серверов |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
IN |
NS |
dns |
Структуракаталога/usr/jailbase |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
IN |
PTR |
dns.host.com. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Укаживнихвсехосты,имеющиестатическиеимена,ибольшеэтифайлы |
# Добавляем новый сервер в базу DNS |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
мытрогатьнебудем,занасвсесделаютскрипты.Запустимbind: |
UPREQ=$JAILBASE/upreq |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo "update add $HOSTNAME 86400 A $IP" > $UPREQ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# /etc/rc.d/named start |
|
echo "send" >> $UPREQ |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nsupdate -k $JAILBASE/Knsupdate.*.private $UPREQ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СКРИПТЫЧтобынашсервиссоответствовалвсемпредъявленным |
rm -f $UPREQ |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
требованиямифункционировалправильно,необходимонаписать,как |
# Записываем информацию об окружении в базу данных |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
минимум,восемьскриптов: |
|
sed "/^$IP.*/s##$IP:$JAILDIR:$IF:$HOSTNAME:$OSVER:$EMA |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
1.addvserver—создаетвиртуальныйсерверпутемдобавлениянового |
IL:$ACTYPE:$TIME:ok#" $DB > ${DB}.new |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
окружения,обновляет/usr/jailbase/db,добавляетнужнуюзаписьвDNS- |
mv ${DB}.new $DB |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
таблицы. |
|
|
# Возвращаем IP сервера |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
2.delvserver — удаляет виртуальный сервер, принцип действия |
echo $IP |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
обратный. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
3.disablevserver—отключаетвиртуальныйсервер,неудаляяего(флаг |
Скриптпринимаетшестьаргументов(доменноеимявиртуальногосер- |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
'disabled'). |
|
|
вера,версияОС,e-mailвладельца,типаккаунта,времяистечениясрока |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
4.enablevserver—включаетотключенныйвиртуальныйсервер(ставит |
аренды,файлспубличнымключомклиента)ивозвращаетIPнового |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
ôëàã'ok'). |
|
|
сервера. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
5.startvserver—запускаетсуществующийвиртуальныйсервер,сверяясь |
Скриптdelvserverвыполняетобратнуюпроцедуру.Сначалаоннаходит |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
ñ/usr/jailbase/db. |
|
|
сервервбазеdb,проверяет,существуетлисервервообще(статусне |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
6.stopvserver—останавливаетсуществующийвиртуальныйсервер. |
долженбытьnone),азатемвыполняетследующуюпоследовательность |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
7.vservers—скриптдлякаталога/usr/local/etc/rc.d,которыйзапускает |
действий(переменнаяSTRING—этострокасервераизdb): |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
виртуальныесерверавовремязагрузкисистемыиостанавливаетво |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
времяшатдауна. |
|
|
# vim /usr/local/bin/delvserver |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
8.watchvservers—скрипт,исполняемыйcron,следитзасостояниемвир- |
# Удаляем сервер |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
туальныхсерверовиостанавливаетихвслучаенеобходимости(напри- |
JAILDIR='echo $STRING | cut -d ':' -f 2' |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
мер,приистечениисрокааренды). |
|
rm -Rf $JAILDIR/$IP $JAILDIR/${IP}.ipfw |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
По-хорошему,первыешестьскриптовлучшеобъединитьводин,при- |
# Удаляем сервер из базы DNS |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
нимающийаргументыadd,del,startиstop,нодлясохраненияпростоты |
HOSTNAME='echo $STRING | cut -d ':' -f 4' |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
изложенияоставимихвотдельныхфайлах. |
UPREQ=$JAILBASE/upreq |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
Итак,скриптномеродин,addvserver(здесьидалее—толькоключевые |
echo "update delete $HOSTNAME A" > $UPREQ |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
элементыскриптов;полныеверсиитынайдешьнаприлагаемомкжурна- |
echo "send" >> $UPREQ |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
лудиске): |
|
|
nsupdate -k $JAILBASE/Knsupdate.*.private $UPREQ |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rm -f $UPREQ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# vim /usr/local/bin/addvserver |
|
# Устанавливаем для сервера статус none |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
# Настраиваем переменные |
|
NEWSTRING='echo $STRING | sed "/$STATUS/s##none#"' |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
HOSTNAME=$1; OSVER=$2; EMAIL=$3; ACTYPE=$4; TIME=$5; |
sed "/^$IP.*/s##$NEWSTRING#" $DB > ${DB}.new |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
KEY=$6 |
|
|
mv ${DB}.new $DB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JAILBASE=/usr/jailbase |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
DB=$JAILBASE/db |
|
|
Скриптdisablevserver,предназначенныйдлявременногоотключения |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Читаем дефолтовые настройки |
виртуальногосервера,оченьпохожнаdelvserver,стемисключением, |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
. $JAILBASE/defaults |
|
чтооннеудаляетсервер,апростоставитнанегофлаг«disabled».Тоесть, |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
# Находим свободный IP-адрес |
переменнаяNEWSTRINGприметвид:«NEWSTRING=`echo $STRING | |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
STRING='grep ':none$' $DB' |
sed "/$STATUS/s##disabled#"`». |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
IP='echo $STRING | cut -d ':' -f 1' |
Скриптenablevserver—брат-близнецdisablevserver,единственноеотли- |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
# Копируем окружение… |
|
чиекоторого—установкафлага'ok'вместо'disabled'. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
cp -a $JAILBASE/FreeBSD-$OSVER $JAILDIR/$IP |
Скриптstartvserver—довольнопримитивен.Онищетпереданныйему |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
# …и создаем для него файл инициализации |
IP-адресвбазе,проверяетсервернаготовность(статус'ok')изапускает |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
RCCONF=$JAILDIR/$IP/etc/rc.conf |
его.Наборправилномер4(ruleset4)длякомандыdevfsсозданспеци- |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
echo "hostname=\"$HOSTNAME\"" > $RCCONF |
альнодляjail-окруженийисодержитсявфайле/etc/defaults/devfs.rules. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
echo "network_interfaces=\"\"" >> $RCCONF |
Чтобыскриптработалкорректно,этотфайлнеобходимоположитьв/etc. |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
echo "rpcbind_enable=\"NO\"" >> $RCCONF |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
echo "sshd_enable=\"YES\"" >> $RCCONF |
# vim /usr/local/bin/startvserver |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
# Копируем публичный ключ в каталог /root/.ssh |
# Извлекаем данные, необходимые для запуска |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
mkdir -p $JAILDIR/$IP/root/.ssh |
JAILDIR='echo $STRING | cut -d ':' -f 2' |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
cat $KEY >> /root/.ssh/authorized_keys2 |
IF='echo $STRING | cut -d ':' -f 3' |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
130 |
|
|
|
XÀÊÅÐ 05 /125/ 09 |
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
|
NOW! |
r |
|
|
|
|
|
|
NOW! |
r |
||||||||||||
|
|
|
|
|
BUY |
|
|
>> |
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
SYN/ACKw |
|
|
to |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|
m |
|||||
w Click |
|
|
|
|
|
|
o |
|
w Click |
|
|
|
|
|
|
o |
|||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
|
.c |
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
|
|
p |
df |
|
|
|
|
e |
|
||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
g |
|
|
|
||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Пример заполненной базы серверов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В списке процессов — пять только что запущенных серверов |
umount $JAILDIR/$IP/usr/ports/packages |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
umount $JAILDIR/$IP/dev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
umount $JAILDIR/$IP/proc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ifconfig $IF inet -alias $IP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Чтобынезаморачиватьсясручнымзапускомсерверов,напишемскрипт |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
vservers,которыйпроверяетопциюvservers_enableв/etc/rc.conf,запуска- |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
етвсеготовыевиртуальныесерверывовремязагрузкиОСиостанавлива- |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
етвовремяшатдауна.Ключевыестрокиэтогофайла: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# vim /usr/local/etc/rc.d/vservers |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Получаем список работоспособных серверов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSERVERS='cat /usr/jailbase/db | grep -e ':ok$' | cut -d |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
':' -f 1' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Процедура запуска серверов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vservers_start() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for IP in $VSERVERS; do |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/usr/local/bin/startvserver $IP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Скрипт /usr/local/etc/rc.d/vservers |
# Процедура остановки серверов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
vservers_stop() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HOSTNAME='echo $STRING | cut -d ':' -f 4` |
for IP in $VSERVERS; do |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OSVER='echo $STRING | cut -d ':' -f 5` |
/usr/local/bin/stopvserver $IP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Запускаем jail-сервер |
done |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ifconfig $IF inet alias $IP |
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mount -t devfs none $JAILDIR/$IP/dev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
devfs -m $JAILDIR/$IP/dev ruleset 4 |
Вотивсе.Рассмотренныескриптыавтоматизируютвсюгрязнуюработу. |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
mount -t procfs none $JAILDIR/$IP/proc |
Большененужнокомпилироватьокружениеисполнения,добавлять |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mount_nullfs $JAILBASE/distfiles-$OSVER |
IP-псевдонимыиредактироватьфайлызон!Достаточновыполнитьвсего |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
$JAILDIR/$IP/usr/ports/distfiles |
двекоманды,—ивиртуальныйсерверсоздан,запущениполностьюготов |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
mount_nullfs $JAILBASE/packages-$OSVER |
киспользованию: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$JAILDIR/$IP/usr/ports/packages |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jail $JAILDIR/$IP $HOSTNAME $IP /bin/sh /etc/rc |
# IP='addvserver new.host.com 7.1-RELEASE vasya@mail.ru |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
base 0906061200 /публичный/ключ/Васи' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Скриптstopvserverпередостановкойпроделываеттежешагии,плюск |
# startvserver $IP |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
этому,проверяет,запущенлисерверспомощьюкомандыjls—иизвлека- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
етегоJID(перваяколонкавыводаjls): |
Остановитьиудалитьсерверещепроще: |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
# vim /usr/local/bin/stopvserver |
# stopvserver $IP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Проверяем, запущен ли сервер |
# delvserver $IP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
STRING='jls | grep $IP' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ ! "$STRING" ]; then |
Осталосьтольконанятьвеб-разработчиков,которыесоздалибыповерх |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
echo "Сервер $IP не запущен» |
этогохозяйствапростойинтерфейсдлярегистрациипользователей,и |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exit 3 |
написатьнебольшойскрипт,которыйзапускалсябыпокронуипроверял, |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
fi |
неистеклисрокарендыаккаунта(примерскриптатынайдешьнадиске). |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
# Узнаем jid сервера |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JID='echo $STRING | cut -d ' ' -f 1' |
КАРКАССОЗДАНМысоздаливполнеработоспособныйкаркас |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Останавливаем jail-сервер |
будущегосервиса.Вследующейстатьемырассмотрим,какприкрутить |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
killall -j $JID -TERM > /dev/null 2>&1 |
кнемуполноценныймониторинг,настройкидляразныхтиповаккаун- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
sleep 1 |
тов,системубэкапа,наложимвсевозможныеограниченияисоздадим |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
killall -j $JID -KILL > /dev/null 2>&1 |
гетерогеннуюсистему,вкоторойсмогутсосуществоватьразныеверсии |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
umount $JAILDIR/$IP/usr/ports/distfiles |
FreeBSD-окружений.z |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XÀÊÅÐ 05 /125/ 09 |
|
131 |
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
|
NOW! |
r |
|
|
|
|
|
|
|
|
|
|
NOW! |
r |
||||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
>> |
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
SYN/ACKw |
|
|
to |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
|||||
w Click |
|
|
|
|
|
|
o |
|
|
|
|
|
w Click |
|
|
|
|
|
|
o |
|||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
|
.c |
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
|
|
|
|
|
|
p |
df |
|
|
|
|
e |
|
||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g |
|
|
|
||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
INTERNET |
|
|
ISP #1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172.16.0/16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Схема нашей сети |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CISCO 1721 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ISP #2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10.2.135.0/24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
WEB SERVER |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOCAL NETWORK#2 |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
DMZ |
|
|
LOCAL NETWORK#2 |
192.168.1.0/24 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
10.10.20.0/24 |
|
|
192.168.3.0/24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cisco#vlan database |
Vlan2•192.168.1.254•YES•manual •up |
«?», и ее нужно ввести вручную. Благодаря этой |
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
cisco(vlan)#vlan 2 |
•up |
|
|
|
команде, при выборе протокола подключения |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
VLAN 2 added: |
cisco#sh ip int brief fa4 |
|
можно выбрать протокол PPTP. |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Name: VLAN0002 |
Interface•IP-Address•OK?•Method• |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
cisco(vlan)#ex |
Status•Protocol |
|
cisco(config)#service internal |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
FastEthernet4•unassigned•YES• |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Теперь настроим наш vlan-интерфейс: |
unset•up•up |
|
|
Включаем и настраиваем vpdn (Virtual Private |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
cisco#sh vlan-switch |
|
Dialup Network): |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
cisco#conf t |
VLAN Name |
Status |
Ports |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
! Настраиваем vlan 2 |
-------------------------------- |
! Включаем vpdn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
cisco(config)#int vlan 2 |
1 |
default |
active |
|
cisco(config) #vpdn enable |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
! Выставляем IP адрес |
2 |
VLAN0002 |
active |
Fa4 |
! Создаем группу с номером 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cisco(config-if)#ip-address |
... skipped ... |
|
cisco(config) #vpdn-group 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
192.168.1.254 255.255.255.0 |
|
|
|
|
cisco(config-vpdn) #request-dialin |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
cisco(config-if)#^Z |
Можешь попробовать пропинговать кого- |
! Указываем протокол соединения |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
нибудь. Должно получиться. В качестве |
cisco(config-vpdn-req-in)#protocol |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
Последнее, что необходимо сделать — доба- |
упражнения советую подключить остальные |
pptp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
вить физический интерфейс в нужный нам |
сети по аналогии с тем, как мы только что |
cisco(config-vpdn-req-in)#rotary- |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
vlan: |
сделали. Советую также добавлять описание |
group 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
к интерфейсу с помощью команды description, |
! Указываем VPN сервер |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
! Конфигурируем интерфейс |
которую необходимо вводить в режиме кон- |
cisco(config-vpdn)#initiate-to ip _vpn_ |
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
fastethernet 4 |
фигурирования интерфейса. Это необязатель- |
server_ip_ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
cisco(config)#int fa4 |
ная процедура, но через некоторое время без |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
! Тип порта (может быть еще trunk) |
таких пометок будет сложно разобраться, что |
Понятное дело, что вместо «_vpn_server_ip_» |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
cisco(config-if)#switchport mode |
к чему относится. |
|
|
необходимо подставить IP-адрес своего VPN- |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
access |
|
|
|
|
сервера. Теперь создаем сам интерфейс, на |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
! Добавляем этот порт во второй vlan |
СОЕДИНЕНИЕСPPTP-СЕРВЕРОМКогда |
котором укажем параметры соединения: |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
cisco(config-if)#switchport access |
я покупал циску, то полагал, что установить |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
vlan 2 |
соединение с VPN-сервером по протоколу |
! Настраиваем интерфейс VPN-клиента |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
PPTP — простая задача. На деле оказалось, что |
cisco(config)#interface Dialer0 |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
Посмотрим, что получилось: |
девайс умеет соединяться только по протоколу |
! Указываем mtu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
L2TP. Прогуглив этот вопрос, я нашел решение, |
cisco(config-if)#mtu 1440 |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
cisco#sh ip int brief vlan 2 |
которое мне кажется больше хаком, чем |
! Автоматически получать IP-адрес |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Interface•IP-Address•OK?•Method•St |
документированной возможностью. Нижес- |
cisco(config-if)#ip address |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
atus•Protocol |
ледующая команда не появляется по нажатию |
negotiated |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
XÀÊÅÐ 05 /125/ 09 |
|
|
|
|
|
135 |
|
|
|
|
|
|
|
|
|