суботу, вересня 10, 2005

Сервер дозвона на Linux

Ці дві статейки я написав давно, це навіть не статті, а лист в форум, відповідь на запитання "Як організувати дозвон в Linux". Чесно кажучи, в них давно потрібно було б дещо змінити, або взагалі переробити, але наразі нехай буде так як є. Подано на російській мові.


-------------------------------------------------------------




(C) 2002 Sergij Marchenko, MakarSoftware, mailto:makar@ua.fm
GPL

Имеем следующее:
RED HAT 7 (или любой совместимый, например ASPLinux 7.X)
Сетка 172.16.0.0/24, выделенка на ttyS0, MOXA с портами cum0 - cum7
Провайдер (FreeBSD) дает на выделенку автоматически IP, DNS; логин и пароль не проверяет.

Хотим:
провайдить локалу и удаленных клиентов.

Решение:

Инсталлируем mgetty. Допустим, у нас есть
mgetty-1.1.25-2.asp.i386.rpm, тогда делаем rpm -ivh
mgetty-1.1.25-2.asp.i386.rpm

Редактируем /etc/mgetty+sendfax/login.config
Тут должны быть только 2 строчки:
/AutoPPP/ - - /etc/ppp/ppplogin
* - - /bin/login @


В /etc/inittab пишем:

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Это добавить:

7:2345:respawn:/sbin/mgetty cum0
8:2345:respawn:/sbin/mgetty cum1
9:2345:respawn:/sbin/mgetty cum2
10:2345:respawn:/sbin/mgetty cum3
11:2345:respawn:/sbin/mgetty cum4
12:2345:respawn:/sbin/mgetty cum5
13:2345:respawn:/sbin/mgetty cum6
14:2345:respawn:/sbin/mgetty cum7


В /etc/hosts пишем:

172.16.0.100 hus0
172.16.0.101 ppphost0

172.16.0.102 hus1
172.16.0.103 ppphost1

172.16.0.104 hus2
172.16.0.105 ppphost2

172.16.0.106 hus3
172.16.0.107 ppphost3

172.16.0.108 hus4
172.16.0.109 ppphost4

172.16.0.110 hus5
172.16.0.111 ppphost5

172.16.0.112 hus6
172.16.0.113 ppphost6

172.16.0.114 hus7
172.16.0.115 ppphost7


В /etc/ppp/options пишем:

modem
crtscts
asyncmap 0


Создаем /etc/ppp/options.cum0

passive
172.16.0.1:172.16.0.101
proxyarp
ms-dns 195.5.62.1
ms-dns 195.5.62.3
debug

ms-dns нужны только для Windows-клиентов (других, наверно и не будет :-) Это наши ДНС-сервера нашего провайдера.

Создаем /etc/ppp/options.cum1 и дальше по аналогии до /etc/ppp/options.cum7

passive
172.16.0.1:172.16.0.103 потом 105, потом 107...
proxyarp
ms-dns 195.5.62.1
ms-dns 195.5.62.3
debug



В /etc/ppp/pap-secrets пишем:

# Secrets for authentication using PAP
# clientserversecretIP addresses
makar*парольмакара172.16.0.101
user*парольюсера172.16.0.102
makarj*парольмакаровогобратана172.16.0.103
shmit*парольхакерашмита172.16.0.104

IP-адреса будут ввыдаваться персонально каждому юсеру. Чтобы они дозванивались, после добавления юсера в систему нужно его добавить в /etc/ppp/pap-secrets Таким образом, мы избавляемся от т.н. "Сиамских близнецов"


Создаем /etc/ppp/ppplogin

#!/bin/sh

mesg n
tty
/usr/sbin/pppd noauth noccp -chap +pap kdebug 4 login

и делаем его исполняемым


Создаем /etc/ppp/resolv.conf

195.5.62.1
195.5.62.3

Это наши ДНС. Не знаю, может это и не нужно. Я просто у провайдера спросил.

Вот и все, что нам нужно, чтобы к нам звонили. На клиентских машинах создаем дозвон, оставляем только TCP-IP, остальное оставляем по умолчанию. В свойствах IP-протокола указываем шлюз на наш сервер 172.16.0.1


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

ppp-on, ppp-off, ppp-on-dialer берем с /usr/share/doc/ppp-2.4.0/scripts и катаем в /etc/ppp

Правим ppp-on:
#!/bin/sh
#
# Script to initiate a ppp connection. This is the first part of the
# pair of scripts. This is not a secure pair of scripts as the codes
# are visible with the 'ps' command. However, it is simple.
#
/bin/masq #Эту байду нужно добавить, потом объясню зачем


# These are the parameters. Change as needed.
TELEPHONE=1# The telephone number for the connection
ACCOUNT=""# The account name for logon (as in 'George Burns')
PASSWORD=""# The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0# Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0# Remote IP address if desired. Normally 0.0.0.0
#NETMASK=0.0.0.0# The proper netmask if needed
#
# Export them so that they will be available at 'ppp-on-dialer' time.


export TELEPHONE #ACCOUNT PASSWORD - у меня мой провайдер паролей не спрашивает. Если у Вас спрашивает - надо раскомментировать

DIALER_SCRIPT=/etc/ppp/ppp-on-dialer

exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS0 38400 asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP noipdefault persist holdoff 5 defaultroute connect $DIALER_SCRIPT

/bin/masq #Эту байду нужно добавить, потом объясню зачем


Правим ppp-on-dialer:
#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#
exec chat -vTIMEOUT3ABORT'\nBUSY\r'ABORT'\nNO ANSWER\r'ABORT'\nRINGING\r\n\r\nRINGING\r'''\rAT'OK-+++\c-OK'ATH0TIMEOUT30''ATA\ # У меня ATA, потому, что мой модем не звонит, а берет трубку
CONNECT''#ogin:--ogin:$ACCOUNT#assword:$PASSWORD Я же говорил, что меня провайдер пароль не спрашивает


ppp-off оставляем без изменений


Правим /etc/rc.d/rc.local
Последнюю строчку ставим:
sh /etc/ppp/ppp-on

Создаем файл /bin/masq
#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -A forward -i ppp0 -s 172.16.0.0/24 -d ! 172.16.0.0/24 -j MASQ

и делаем его исполняемым. Эта штука будет нам маскарадить клиентов в интернет


Для съема статистики рекомендую getstatd - http://www.opennet.ru/getstatd/
Очень крутая, но простая в использовании штука. Дает пользователю возможность через веб-интерфейс узнать статистику за любой период, а администратору - статистику на всех юсеров.


Может чего и упустил, в случае чего мыльте. В качестве оплаты принимаю виртуальное пиво ;-)






-------------------------------------------------------------





(C) 2003 Sergij Marchenko, MakarSoftware, mailto:makar@ua.fm
GPL

Эта дока рассказывает, как сделать маленький диалап-сервер у себя дома



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

Допустим, на сервере стоит модем на com1

Инсталлируем mgetty. Допустим, у нас есть
mgetty-1.1.25-2.asp.i386.rpm, тогда делаем rpm -ivh
mgetty-1.1.25-2.asp.i386.rpm

Редактируем /etc/mgetty+sendfax/login.config
Тут должны быть только 2 строчки:
/AutoPPP/ - - /etc/ppp/ppplogin
* - - /bin/login @


В /etc/inittab пишем:

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Это добавить:

7:2345:respawn:/sbin/mgetty ttyS0


В /etc/hosts пишем:

172.16.0.100 hus0 - это типа сервер
172.16.0.101 ppphost0 - это типа клиент


В /etc/ppp/options пишем:

modem
crtscts
asyncmap 0


Создаем /etc/ppp/options.ttyS0

passive
172.16.0.100:172.16.0.101
proxyarp
ms-dns 172.16.0.100
ms-dns 172.16.0.100
debug


В /etc/ppp/pap-secrets пишем:

# Secrets for authentication using PAP
# client server secret IP addresses
user * парольюсера 172.16.0.101


Создаем /etc/ppp/ppplogin

#!/bin/sh

mesg n
tty
/usr/sbin/pppd noauth noccp -chap +pap kdebug 4 login

и делаем его исполняемым


Создаем /etc/ppp/resolv.conf

172.16.0.100
172.16.0.100


Теперь после kill -1 1 или после перезагрузки твой модем дожен брать
трубку после первого звонка. Он полностью готов к работе как настоящий
сервер дозвона.

Чтобы кидаться файлами, лучше всего использовать FTP. Самый простой
способ - проинсталлировать wu-ftpd. Например, если у нас есть
wu-ftpd-2.6.1-12.0.asp.i386.rpm, то делаем rpm -ivh
wu-ftpd-2.6.1-12.0.asp.i386.rpm
Редактируем /etc/xinetd.d/wu-ftpd Он должен иметь такой вид:

# default: on
# description: The wu-ftpd FTP server serves FTP connections. It uses # normal, unencrypted usernames and passwords for authentication.
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.ftpd
server_args = -l -a
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
# disable = yes
}


После этого делаем /etc/rc.d/init.d/xinetd restart


Сервер готов. На клиенте работаем с ним точно так же, как с
интернетом. Делаем дозвон, запускаем ftp сессию и расслабляемся.

Немає коментарів: