 |
от Димитър Василев(21-04-2003)
рейтинг (0)
[ добре ]
[ зле ]
Вариант за отпечатване
18.6 Употреба на SLIP
Първоначално написано от Satoshi Asami.
С добавки от Guy Helmer и Piero Selini
18.6.1 Настройване на SLIP клиент
Следният начин е един от многото да се
настрои FreeBSD машина за SLIP в мрежа със статични
адреси. За машини с динамични разпределения на IP-тата
(адресът ви се
мени всеки път щом набирате), вероятно ще ви е нужна
по-сложна
конфигурация.
Първо, определете към кой
сериен порт е свързан вашия модем. Много хора задават
символна връзка
като /dev/modem да сочи към истинското устройство -
/dev/cuaaN. Това ви
позволява да се абстрахирате от истинското устройство, ако
ви се наложи
да преместите модема на различен порт. Може да стане доста
непосилно да
коригирате една камара файлове в /etc и .kermrc файлчетата
по целия
сървър!
Забележка: /dev/cuaa0 е COM1, cuaa1 е COM2 и
т.н.
Проверете дали имате следния ред в конфигурацията на
ядрото:
pseudo-device sl 1
Той е включен в GENERIC ядрото, така че не би трябвало да е
проблем, освен ако не сте го изтрили.
18.6.1.1 Неща, които ще направите само веднъж
1. Добавете вашата домашна
машина, рутера и неймсър-върите към вашия файл /etc/hosts.
Моят (на
автора – бел.прев.) изглежда тъй:
127.0.0.1 localhost loghost
136.152.64.181 water.CS.Example.EDU water.CS water
136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway
128.32.136.9 ns1.Example.EDU ns1
128.32.136.12 ns2.Example.EDU ns2
2. Проверете дали имате
hosts преди bind във вашия /etc/host.conf. Иначе могат да
станат забавни
случки.
3. Редактирайте /etc/rc.conf
- 1. Задайте името на машината, редактирайки реда
гласящ:
myname.my.domain
Пълното име на хоста трябва да бъде поставено тук.
- 2. Добавете sl0 към
списъка от мрежови интерфейси, сменяйки реда гласящ:
network_interfaces="lo0"
на:
network_interfaces="lo0 sl0"
- 3. Задайте стартовите
опции на sl0, добавяйки ред:
ifconfig_sl0="inet ${hostname} slip-gateway netmask
0xffffff00 up"
- 4. Опишете рутера по подразбиране:
defaultrouter="NO"
на:
defaultrouter="slip-gateway"
- 5. Създайте /etc/resolv.conf, съдържаш:
domain CS.Example.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12
Както виждате, тук се задават
DNS хостовете. Разбира се, реалните имена и адреси зависят
от вашата
среда.
- 6. Задайте паролите за root и
toor(и които и да било други потребители, които нямат
парола).
- 7. Рестартирайте и проверете
дали машината ''изгрява'' с правилното име.
18.6.1.2 Установяване на SLIP връзка
1. Наберете, въведете slip на
промпта, въведете името на хоста си и паролата. Какво е
нужно да бъде
въведена зависи от вашата среда. Ако използвате kermit,
можете да
опитате скрипт като този:
# kermit setup set modem hayes
set line /dev/modem
set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# The next macro will dial up and login define slip
dial 643-9600, input 10 =>, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop,
-
output ***\x0d, echo \x0aCONNECTED\x0a
Разбира се трябва да смените
името на хоста и паролата според вашите. След това, можете
просто да
въведете slip от промпта на kermit, за да се свържете.
Забележка: Оставяйки паролата си незакодирана,
където и са било на вашата система като цяло
е лоша идея. Правете го на собствен риск!
2. Оставете kermit там (можете да го ''замразите'',
натискайки Ctrl + z) и като root, въведете:
# slattach -h -c -s 115200 /dev/modem
Ако сте в състояние да ping-вате хостове от другата страна
на рутера, вие сте вързани! Ако не
проработи, можете да смените -c с -a като опция към slattach.
18.6.1.3 Как да спрем връзката
Направете следното:
# kill -INT `cat /var/run/slattach.modem.pid`
да убиете slattach. Имайте в
предвид, че трябва да сте root за да сторите горното. След
това се
върнете обратно в kermit (като въведете fg ако сте го
''замразили'') и
излезете от него( натискайки q).
Страницата от наръчника за
slattach казва, че трябва да използвате ifconfig sl0 down,
за да
маркирате интерфейса като неактивен, но това не е кой знае
колко
различно за мен (за автора – бел. прев.)от горното.
(ifconfig sl0 отчита
същото като ifconfig sl0 down, след излизане от kermit.)
Понякога модемът ви може да
откаже да се разкачи (моят (на автора) често го прави). В
такъв
случай, просто стартирайте kermit и излезте от него
отново. Обикновено
става на втория път.
18.6.1.4 Отстраняване на проблеми
Ако не работи, чувствайте се
свободни да ме питате. Ето какво откриха хората досега:
1. Пропускане на опциите -c или -a в slattach (Това не би
трябвало да е фатално, но някои
потребители съобщиха, че им е решило проблемите.)
2. Употребата на s10 вместо
sl0 (разликата може да бъде трудно уловена при някои
шрифтове).
3. Опитайте ifconfig sl0 да видите статуса на
интерфейса. Например, може да получите:
# ifconfig sl0
sl0: flags=10<POINTOPOINT>
inet 136.152.64.181 --> 136.152.64.1 netmask
ffffff00
4. Ако получите съобщение за
грешка ``no route to host'' от ping, може да има проблем с
рутиращата
таблица. Можете да използвате netstat -r, за да видите
текущите
маршрути (routes):
# netstat -r
Routing tables
Destination Gateway Flags Refs Use Iface MTU Rtt
Netmasks:
(root node)
(root node) Route Tree for Protocol Family inet:
(root node)=>
default inr-3.Example.EDU UG 8 224515 sl0 - -
localhost.Exampl localhost.Example.UH 5 42127 lo0 -
0.438
inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - -
water.CS.Example localhost.Example.UGH 34 47641234 lo0 –
0.438
(root node)
Предходните примери са от
сравнително заета система. Стойностите за вашата система ще
зависят от
мрежовата активност.
18.6.2 Настройване на SLIP сървър
18.6.2.1 Подготовка
Този раздел е много технически по своя
характер. Желателно е да имате предварителни познания
по темата. Предполага се, че сте запознати с TCP/IP
мрежовия прото-кол;
в частност мрежово и системно (node) адресиране, мрежови
маски,
разделяне на подмрежи, рутиране и протоко-ли за рутиране,
като RIP.
Настройването на SLIP услуги
на дайъл-ъп сървър изисква познаване на тези концепции.
Ако не сте
запозна-ти с тях, моля да прочетете една от двете книги:
''TCP/IP
Network Administration'' от Craig Hunt, публикувана от
O'Reilly &
Associates, Inc. (ISBN 0-937175-82-X); или книгите на
Douglas Comer
относно TCP/IP протокола.
Освен това се предполага че
вече сте настроили модема/ите/ и настроили съответните
системни
файлове, за да позволите влизания през модемите. Ако не сте
подготвили
системата си все още затова, моля вижте ръководството за
настройване на
дайъл-ъп услуги; ако имате браузър, разгледайте списъка на
FreeBSD.org.
Можете също да разгледате on-line страниците от наръчника
за sio(4)
относно информация за серийните драйвъри, ttys(5),
gettytab(5), getty
(8), init(8) за съответната информация по настройване на
системата да
приема влизания на модеми и вероятно stty(1) за информация
по
настройване парамет-рите на серийния порт (като clocal за
директно
свързани серийни интерфейси).
18.6.2.2 Бърз преглед
В типичната конфигурация под FreeBSD,
SLIP работи по следния модел: SLIP потребител набира вашата
система от сървъри и влиза, използвайки специално SLIP ID,
което
използва /usr/sbin/sliplogin като шел на въпросния
потребител.
Програмата sliplogin разглежда /etc/sliphome/slip.hosts да
открие
съответствие за въпросния потребител и ако го открие,
свързва серийната
линия към наличния SLIP интерфейс и после стартира шел
скрипта
/etc/sliphome/slip.login да настрои SLIP интерфейса.
18.6.2.2.1 Пример за влизане в SLIP сървър
Например, ако имаше ID на
SLIP потребител Shelmerg, то неговия низ в
/etc/master.passwd би
изглеждал така:
/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer
0xfffffc00 autocomp
Ако всичко върви добре,
/etc/sliphome/slip.login ще изададе командата ifconfig за
SLIP
интерфейса към който sliplogin се е закачил (slip интерфейс
0, в горния
пример който беше първият параметър зададен в списъка към
slip.login)
за да настрои локалния IP адрес (dc-slip), отдалечения
адрес
(sl-helmer), мрежовата маска за SLIP интерфейса
(0xfffffc00) и много
други допълнителни флагове (autocomp). Ако нещо се обърка,
обикновено
sliplogin логва много полезни съобщения чрез daemon
функцията на
syslog, които могат да бъдат намерени във /var/log/messages
(вижте man
syslogd(8), syslog.conf(5) и вероятно проверете
/etc/syslog.conf да
видите какво syslogd записва и къде го прави.
Добре, достатъчно примери – да се гмурнем в дълбокото и
настроим машината.
18.6.2.3 Настройване на ядрото
Ядрото по подразбиране на
FreeBSD обикновено идват с два зададени SLIP интерфейса
(sl0 и sl1);
можете да ползвате netstat -i, за да видите дали те са
зададени във
вашето ядро.
Примерен резултат от netstat -i:
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
ed0 1500<Link> 0.0.c0.2c.5f.4a
291311 0 17409 0 139
ed0 1500 138.247.224 ivory
291311 0 17409 0 139
lo0 65535 <Link> 79 0 79 0 0
lo0 65535 loop localhost 79 0 79 0 0
sl0* 296 <Link> 0 0 0 0 0
sl1* 296 <Link> 0 0 0 0 0
Интерфейсите sl0 и sl1
показани от netstat -i, разкриват че има два SLIP
интерфейса вградени в
ядрото. (Звездичките след sl0 и sl1 показват, че те са
неак-тивни.)
Подразбиращото се ядро на
FreeBSD обаче не е настроено да препраща пакети (по
подразбиране вашата
FreeBSD машина няма да действа като рутер) поради
изискванията за
Интер-нет хостовете (вижте RFC-та 1009 [Requirements for
Internet
Gateways], 1122 [Requirements for Internet Hosts -
Communication Layers]
и вероятно 1127 [A Perspective on the Host Requirements
RFCs]). Ако
искате вашия FreeBSD SLIP сървър да действа като рутер,
трябва да
редактирате /etc/rc.conf и промените стойността на
gateway_enable на
YES. После рестартирайте, за да влезе в сила.
Ще забележите, че близо до
края на конфигурацията по подразбиране
(/sys/i386/conf/GENERIC) има ред
гласящ:
pseudo-device sl 2
Това е редът определящ броя
на наличните SLIP устройства налични в ядрото; цифрата в
края на реда
обозначава максималния брой SLIP връзки, които могат да
работят
едновременно. Моля прегледайте Глава 9 относно допълнителни
съвети за
преконфигуриране на ядрото.
18.6.2.4 Настройване на sliplogin
Както беше споменато по-рано,
има три файла в директорията /etc/sliphome, които са част
от
конфигу-рацията на /usr/sbin/sliplogin (вижте man sliplogin
за
същинската страница от наръчника за sliplogin): slip.hosts,
който
определя SLIP потребителите и полага-щите им се IP адреси;
slip.login,
който обикновено настройва единствено SLIP интерфейса; и
(по желание)
slip.logout, който премахва ефектите от slip.login, когато
серийната
връзка е приключена.
18.6.2.4.1 Настройване на slip.hosts
/etc/sliphome/slip.hosts съдържа редове,
които имат поне четири параметъра разделени от интервали:
- Потребителското име
-
- Местният адрес (местен за SLIP сървъра) на SLIP
връзката
- Отдалеченият адрес на SLIP връзката
- Мрежовата маска
Местният и отдалеченият адрес
могат да бъдат имена на хостове (преобразувани в IP адреси
от
/etc/hosts или чрез DNS, в зависимост от вашите
спецификации в
/etc/host.conf). Мрежовата маска може да бъде изписана с
букви, която в
последствие може да се преобразува чрез запитване в
/etc/network. Ето
пример за това как изглежда /etc/sliphome/slip.hosts на
въображаема
машина:
#
#login local-addr remote-addr mask opt1 opt2
# (normal,compress,noicmp)
#
Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp
В края на реда има една или повече опции:
- normal – без компресия на заглавните части
- compress – компресиране на заглавните части
- autocomp - компресиране на заглавните части, ако
отдалечената страна го позволява
- noicmp – забрана на ICMP пакетите (така че каквито и да
било ''ping'' пакети ще бъдат изхвърлени
вместо да хабят мрежовия капацитет.)
Изборът ви за локални и
отдалечени адреси за вашите SLIP връзки зависи от това дали
ще заделите
TCP/IP подмрежа или възнамерявате да използвате ''proxy
ARP'' на вашия
SLIP сървър (това не е ''истинско'' proxy ARP, а
терминология
използване в този раздел, за да бъде описан). Ако не сте
сигурни кой
метод да използвате или как да заделите IP адреси, обърнете
се към
книгите за TCP/IP в раздел 18.6.2.1 и/или се консултирайте
с вашия IP
мрежов мениджър.
Ако ще заделяте сегмент от
адреси за SLIP клиентите си, ще трябва да извадите
въпросния сегмент от
наличните ви адреси и зачислявате на всеки клиент адрес от
този
сегмент. После, вероятно ще трябва да настроите статичен
път (static
route) към SLIP сегмента чрез вашия SLIP сървър на
най-близкия IP рутер.
Иначе, ако ще използвате ''proxy ARP'' метода, ще
трябва да заделите за клиентите си адреси от
Ethernet сегмента на SLIP сървъра. Ще трябва също да
нагласите
/etc/sliphome/slip.login и /etc/sliphome/slip.logout да
използват arp(8)
за управление на proxy-ARP низовете в ARP таблицата на SLIP
сървъра.
18.6.2.4.2 Настройване на slip.login
Типичният /etc/sliphome/slip.login
изглежда така:
#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
# generic login file for a slip line.
# sliplogin invokes this with the parameters:
#1 2 3 4 5 6 7-n
#slipunit ttyspeed loginname local-addr remote-addr mask
opt-
#args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
Този файл slip.login
единствено стартира ifconfig за съответния SLIP инетрфейс с
локалния,
отдалечения адрес и мрежовата маска на SLIP интерфейса.
Ако сте решили да използвате
''proxy ARP'' метода (вместо да зачислявате отделна
подмрежа за SLIP
клиентите ви), вашият /etc/sliphome/slip.login ще трябва да
изглеж-да
подобно на:
#!/bin/sh -
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#generic login file for a slip line. sliplogin invokes this
#with the parameters:
#1 2 3 4 5 6 7-n
#slipunit ttyspeed loginname local-addr remote-addr mask
opt-
#args
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
#Answer ARP requests for the SLIP client with our Ethernet
#addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pub
Допълнителният ред в този
slip.login, arp -s $5 00:11:22:33:44:55 pub, създава ARP
низ в ARP
таблицата на SLIP сървъра. Този ARP низ кара SLIP сървъра
да отговаря
с Ethernet MAC адреса си всеки път щом друго IP на Ethernet
мрежата
прати заявка за комуникация с IP адреса на SLIP клиента.
Когато използвате горният
пример, уверете се че сменя-те Ethernet MAC адреса
(00:11:22:33:44:55)
с MAC адреса на вашата Ethernet карта или вашето ''proxy
ARP''
опреде-лено няма да проработи! Можете да откриете Ethernet
MAC адреса
на сървъра, гледайки в резултатите от командата netstat -i.
Вторият ред
на резултата трябва да изглежда подобно на:
ed0 1500 <Link> 0.2.c1.28.5f.4a 191923 0 129457 0 116
Това показва, че Ethernet MAC
адреса на нашата примерна машина е 00:02:c1:28:5f:4a -
точките в него,
дадени от netstat -i трябва да бъдат сменени в двоеточия и
нули трябва
да бъдат добавени към всеки единичен шестнадесетичен знак,
за да бъде
преобразуван адреса във формат желан от arp(8); вижте man
arp за пълна
информация относно употребата.
Забележка: Когато
създавате /etc/sliphome/slip.login и
/etc/sliphome/slip.logout,
''изпълнимия'' бит (chmod 755 /etc/sliphome/slip.login
/etc/sliphome/slip.logout) трябва да бъде зададен, иначе
sliplogin няма
да може да ги изпълни.
18.6.2.4.3 Конфигурация на slip.logout
Файлът /etc/sliphome/slip.logout не е
строго задължи-телен (освен ако не
възприемате ''proxy ARP''), но ако решите да го създадете,
ето пример
на прост slip.logout:
#!/bin/sh -
#
#slip.logout#
#logout file for a slip line.sliplogin invokes this
#with the parameters:
#1 2 3 4 5 6 7-n
#slipunit ttyspeed loginname local-addr remote-addr mask
opt-
#args
#
/sbin/ifconfig sl$1 down
Ако използвате ''proxy ARP'',
ще желаете /etc/sliphome/slip.logout да премахне ARP реда
за SLIP
клиента:
#!/bin/sh -
#
#@(#)slip.logout
#logout file for a slip line. sliplogin invokes this
#with the parameters:
#1 2 3 4 5 6 7-n
#slipunit ttyspeed loginname local-addr remote-addr mask
opt-
#args
/sbin/ifconfig sl$1 down
#Quit answering ARP requests for the SLIP client
/usr/sbin/arp -d $5
Командата arp -d $5 премахва ARP описа, който файла
slip.login с ``proxy ARP'' възможности добавя
при влизане на клиент.
Струва си да повторим: бъдете
сигурни, че /etc/sliphome/slip.logout има зададен
изпълнимия бит след
като е бил създаден от вас (тоест chmod 755
/etc/sliphome/slip.logout).
18.6.2.5 Разчети при рутирането
Ако не използвате ''proxy
ARP'' метода за рутиране на пакетите между SLIP клиентите
си и
остатъка от вашата мрежа (вероятно и Internet), може да ви
се наложи да
добавите статични маршрути към най-близкия рутер/и/ по
подразбиране да
рутирате пакетите от мрежовия сегмент за SLIP клиентите си
чрез вашия
SLIP сървър.
18.6.2.5.1 Статични маршрути (Static Routes)
Добавянето на статични
маршрути към най-близкия подразбиращ се рутер може да бъде
неприятно
(или невъзможно ако нямате такива правомощия...). Ако имате
мрежа с
множество рутери във вашата организация, някои от тях, като
тези
произведени от Cisco и Proteon, може не само да се нуждаят
от настройка
за статичния маршрут към SLIP сегмента, а също и да им бъде
указано за
кои статични пътища да съобщават на останалите рутери. Така
че ще е
нужно известно познание, опит и настройване, за да накарате
рутирането
със статични маршрути да работи.
18.6.2.5.2 Gated
Gated вече е фирмен софтуер и
повече няма да бъде наличен като изходен код за
обществеността (повече
информация на сайта на gated).
Този раздел съществува единствено да осигури обратна
съвместимост за
онези, които все още използват по-стари версии.
Инсталирането и
конфигурирането на gated да ползва съответните протоколи
(RIP/OSPF/BGP/EGP) на вашия FreeBSD SLIP сървър е
алтернатива на
главоболията от статичното рутиране. Ще трябва да напишете
файл
/etc/gated.conf, за да настроите gated; ето пример, подобен
на онзи,
който автора ползваше на FreeBSD SLIP сървър:
#
# gated configuration file for dc.dsu.edu; for gated
version
#3.5alpha5
#Only broadcast RIP information for xxx.xxx.yy out the
ed
#Ethernet interface
#
#
#tracing options
#
traceoptions "/var/tmp/gated.output" replace size 100k
files 2 general;
rip yes {
interface sl noripout noripin;
interface ed ripin ripout version 1 ;
traceoptions route ;
} ;
#
# Turn on a bunch of tracing info for the interface to the
kernel:
kernel {
traceoptions remnants request routes info interface ;
} ;
#
#Propagate the route to xxx.xxx.yy out the Ethernet
interface via RIP
#
export proto rip interface ed {
proto direct { xxx.xxx.yy mask 255.255.252.0 metric 1;#
SLIP connections
} ;
#
#Accept routes from RIP via ed Ethernet interfaces
import proto rip interface ed {
all ;
} ;
Този примерен файл gated.conf
разпространяван информация за маршрутите, засягаща SLIP
сегмента
xxx.xxx.yy чрез RIP на Ethernet мрежата; ако използвате
различен
драйвър от ed, ще трябва да смените препратките към ed
където е
необходимо.
Също така, този примерен файл
задава файл /var/tmp/gated.output за проследяване на
проблеми при
дейността на gated. Можете да изключите проследяващите
функции, ако
gated работи OK за вас. Ще трябва да смените xxx.xxx.yy в
мрежовия дял
на вашата SLIP подмрежа (уверете се, че сте сменили и
мрежовата маска в
proto direct също така).
Веднъж gated е инсталиран и
настроен на вашата машина, ще трябва да укажете на
стартовите скриптове
на FreeBSD да го стартират наместо routed. Най-лесният
начин да се
постигне това е да се настроят променливите router
и router_flags в /etc/rc.conf.
Моля
прочетете страницата от наръчника за gated относно
информация за
опциите в коман-ден ред.
<< Инсталация и стартиране на debian dosemu paradox4.5 | Как да си подкарате скенер Acer S2W 3300U под Дебиан/GNU >>
|
 |