Linux gate что это

Содержание
  1. ОС Linux как мост (gateway) между локальной сетью и Internet
  2. Костарев Алексей Федорович, kaf@terem.perm.su
  3. 1. Введение
  4. 2. Функции моста (gateway)
  5. 3. Настройка ядра ОС Linux
  6. 3.1 Начальные установки
  7. 3.2 Включение возможностей маршрутизации пакетов, защиты сети (screening router) и подсчета IP-статистики (account)
  8. 3.3 Настройка сетевых драйверов
  9. 3.4 Сборка ядра
  10. 4. Настройка программного обеспечения
  11. 4.1 Настройка интерфейсов
  12. 4.2 Настройка routing’а
  13. 4.3 Настройка nameserver’а
  14. 4.4 Настройка зашиты
  15. 5. Заключение
  16. 1 Введение
  17. 2 Функции моста (gateway)
  18. 3 Настройка ядра ОС Linux
  19. 3.1 Начальные установки
  20. 3.2 Включение возможностей маршрутизации пакетов, защиты сети (screening router) и подсчета IP-статистики (account)
  21. 3.3 Настройка сетевых драйверов
  22. 3.4 Сборка ядра
  23. 4 Настройка программного обеспечения
  24. 4.1 Настройка интерфейсов
  25. Настройка локального интерфейса lo
  26. Настройка интерфейса платы Ethernet локальной сети (eth0)
  27. Интерфейс для серийного порта — SLIP/CSLIP (sl0) или PPP (ppp0)
  28. 4.2 Настройка routing’а
  29. 4.3 Настройка nameserver’а
  30. 4.4 Настройка зашиты
  31. Screening routing
  32. Выключение серверов на локальным машинах
  33. Wrapping
  34. 5 Заключение
  35. Русские Блоги
  36. Как получить динамическую библиотеку linux-gate.so.1

ОС Linux как мост (gateway) между локальной сетью и Internet

Костарев Алексей Федорович, kaf@terem.perm.su

В документе описана настройка ОС Linux для подключения локальной сети к сети Internet

1. Введение

2. Функции моста (gateway)

3. Настройка ядра ОС Linux

3.1 Начальные установки

3.2 Включение возможностей маршрутизации пакетов, защиты сети (screening router) и подсчета IP-статистики (account)

3.3 Настройка сетевых драйверов

3.4 Сборка ядра

4. Настройка программного обеспечения

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

4.2 Настройка routing’а

4.3 Настройка nameserver’а

4.4 Настройка зашиты

5. Заключение

1 Введение

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

Данное руководство справедливо для версий ядра 1.2.8 — 1.2.13 Новые эксперементальные ядра 1.3. позволяют Вам обеспечить дополнительные возможности (Mobile-IP, IP-masquarading и т п) но в настоящее время являются эксперементальными.

Рассматриваемый тип дистрибутива — Slackware v 3.0.0. Для других типов дистрибуции (RED HAT, CALDERA и т п) необходимо сделать корректировку на другой способ инициализации системы (выход в мультирежим — каталог /etc/rc.d/. ), набора команд команд поддержки TCP/IP и т п.

2 Функции моста (gateway)

Мост между локальной сетью и Internet выполняет следующие функции:

  • Поддержка постоянной (или по требованию) связи с IP-провайдером
  • Маршрутизация IP пакетов между локальной сетью и сетью Internet (routing) для выхода локадьных пользователей в сеть Internet.
  • Обеспечение IP-сервиса (ftp,telnet,talk и т п) для пользователей локальной сети и сети Internet
  • Обеспечение защиты от несанкционированного доступа к локальной сети из сети Internet

3 Настройка ядра ОС Linux

3.1 Начальные установки

Как правило во всех дистрибутивах ОС Linux ядро собрано так, что оно не работает как router (маршрутизатор пакетов) между разными сетями, не поддерживает механизм защиты (firewall) маршрутизируемых пакетов и подсчета статистики. Кроме того выбранное вами первоначальное ядро может не содержать необходимых драйверов для поддержки сетевых плат и содержит набор драйверов не нужных Вам для работы.

Поэтому Вам необходимо будет собрать новое ядро, включив в него необходимые функции и драйвера для работы в качестве gateway.

Для сборки ядра Вам необходимо установить в систему исходные тексты ядра (дискеты K в Slackware v 3.0.0, или дискеты D в предыдущих версиях Slackware).

После установки перейдите в каталог /usr/src/linux и запустите команду

Установите необходимые параметры в секциях General Setup , IDE Drivers . Ответьте y на вопрос

3.2 Включение возможностей маршрутизации пакетов, защиты сети (screening router) и подсчета IP-статистики (account)

В секции Networking options Ответьте утвердительно на следующие вопросы:

3.3 Настройка сетевых драйверов

В секции Network device support ответьте y на вопрос

Если вы не установили режима динамически загружаемых драйверов или Ваш драйвер сетевой платы не является динамически загружаемым, то Вам необходимо включить его (их) во время генерации системы.

Минимально необходимый набор драйверов:

  • Для серийной (модемной) линии Вам надо включить либо SLIP, CSLIP драйверы либо PPP драйвер. Тип драйвера уточните у Вашего IP-провайдера.
  • Для локальной (ethernet) сети один из сетевых драйверов (часть драйверов находится в подпунктах

Do you want to be offered ALPHA test drivers (CONFIG_NET_ALPHA)

Other ISA cards (CONFIG_NET_ISA).

3.4 Сборка ядра

После ответа на все вопросы запустите команды:

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

После сборки ядра перепишите его в корневой катагог под любым удобным для Вас именем (например: linuxroute) :

После этого перезагрузите машину и попробуйте загрузить новое ядро. Если все прошло успешно — переходите к настройке программного обеспечения.

4 Настройка программного обеспечения

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

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

Динамическое подключение драйверов и устнановка интерфейса для устройств, как правило производится в файле /etc/rc/rc.inet1.

Для динамического подключения драйвера необходимо в файл rc.inet1. добавить команду(ы):

Интерфейсом с точки зрения ОС является устройство через которое система получает и передает IP-пакеты. Каждое устройство (не вся машина) имеет свой IP-адрес. Интерфейс для устройства устанавливается командой ifconfig.

В файле rc.inet1 Вы должны установить следующие интерфейсы:

  • Локальный интерфейс (lo). Настройка этого интерфейса, как правило, автоматически включается в файл rc.inet1 при установке дискет N 1-4 (TCP/IP) ОС Linux.
  • Интерфейс для платы Ethetnet (eth0).
  • Интерфейс для серийного порта — SLIP/CSLIP (sl0) или PPP (ppp0) в зависимости от возможностей IP-провайдера.

Настройка локального интерфейса lo

Настройка локального интерфейса автоматически включается в файл rc.inet1 после установки TCP/IP. Локальный интерфейс устанавливается командой:

Например, чтобы проверить правильность установки TCP/IP, наберите команду:

Чтобы проверить правильность работы IP-серверов используйте для IP-клиентов адрес локального интерфейса: 127.0.0.1. Например, для проверки работы ftp-сервера, наберите команду

Настройка интерфейса платы Ethernet локальной сети (eth0)

Для связи с локальной сетью как правило используют одну или несколько плат Ethernet. Драйвер платы должен быть подключен в ядро, либо на этапе сборки ядра (см. выше), либо командой подключения динамически загружаемых драйверов:

Ядро именует драйверы Ethernet как eth0, eth1 и т. д.

Для конфигурации интерфейса Вам надо знать :

  • IP-номер машины в сети
  • Широковещательный адрес (BROADCAST)
  • маску подсети (subnetmask)

В файле rc.inet1 после инсталляции уже есть закомментированные строки с настройкой интерфейса. Вам надо лишь определить вышеперечисленые переменные и раскомментировать строки:

Интерфейс для серийного порта — SLIP/CSLIP (sl0) или PPP (ppp0)

Для работы по серийному порту Вы можете использовать как SLIP (Serial Line Interface Protocol) с его модификацией CSLIP (Compressed Serial Line Interface Protocol), так и PPP (Point To Point) протокол.

PPP-протокол (программа pppd) является более сложным — он позволяет проверять достоверность входа для коммутируемых линий, поддерживает не только IP-протокол но и другие.

SLIP/CSLIP — протокол является более простым и удобным в настройке и часто используется для выделенных линий.

В данной работе мы рассмотрим настройку SLIP/CSLIP протокола для работы по выделенной линии через модемы.

Наиболее популярной программой для работу по протоколу SLIP/CSLIP по модему является dip (DialUpIP). Она позволяет использовать модем как по выделенной так и по комутируемой линии и производить настройки скорости соединения, IP-адресов, процедуры входа и т. п.

Основная проблема в программой dip состоит в том, что при вызове она становится фоновым процессом и после падения линии снимается без повторного запуска так что очень трудно отследить падение линии и перезапустить процесс соединения. Для решения этой проблемы в данном примере используется модифицированая программа dip, которая не уходит в фоновый процесс и вы можете легко ее перезапустить после падения линии, написав процедуру на языке shell:

Файл конфигурации описывает номер порта, скорость работы модема, локальный и удаленый IP-адрес интерфейса и т. п. Пример файла конфигурации приведен ниже:

4.2 Настройка routing’а

Настройка routing’а (маршрутизации пакетов между интерфейсами) может быть как статической (однократно настраиваемая таблица), так и динамической.

Динамическая настройка бывает необходима в том случае, если у Вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например через разные Ethernet или SLIP интерфейсы). Для динамической настройки routing’а служат команды routed и gated.

Как правило в большинстве ситуаций бывает достаточно статической настройки интерфейса командой route.

Настройка routing’а производится в файле rc.inet1. Как правило Вам бывает необходимо настроить routing по вышеперечисленным трем интерфейсам:

  • Локальный интерфейс (lo).
  • Интерфейс для платы Ethetnet (eth0).
  • Интерфейс для серийного порта — SLIP/CSLIP (sl0).

Локальный инерфейс поддерживает сеть с IP-номером 127.0.0.1 . Поэтому для машрутизации пакетов с адресом 127. используется команда :

Если у Вас для связи с локалной сетью используется одна плата Ethernet и все машины находятся в этой сети (сетевая маска 255.255.255.0), то для настройки routing’а достаточно вызвать:

Настройку routing’а по интерфейсу SLIP/CSLIP производит команда dip, вызывая при установлении связи команды ifconfig и route.

4.3 Настройка nameserver’а

Если Вы не собираетесь заводить поддержку сервиса имен для свой сети (что является довольно сложной организациооной и технической проблемой) и доверяете ведение своих имен Вашему IP-провайдеру, то Вам достаточно указать в файле /etc/resolv.conf адрес nameserver’а вашего провайдера:

4.4 Настройка зашиты

Защита локальной сети от взлома осуществляется следующими способами:

  • запретом роутирования (машрутизации) указанных пакетов с одного интерфейса на другой (screening routing).
  • выключение серверов на локальным машинах
  • закрытие или ограничение доступа к серверам на локальных машинах (wrapping).

Screening routing

Данный режим защиты использует возможности ядра Linux блокировать указанные пакеты при их передаче (forwarding) с одного интерфейса на другой. Эти возможности включаются при конфигурации ядра (make config — см.выше) с параметрами:

Преимущество данного метода состоит в том, что Вы можете на одной машине (gateway между локальной сетью и Internet’ом) защитить всю локальную сеть, не защищая каждую мащину в отдельности.

Для того чтобы включить защиту Вам необходимо воспользоваться программой настройкой защиты ipfwadm.

В 90% случает бывает достаточно закрыть TCP-порты c 1-го по 1024 для запреты доступа к основным TCP-серверам и порты с 5000 по 65535 для запреда доступа с X-серверам, оставив порты 1025-4999 для работы программ-клиентов локальной сети. Если Вы хотите открыть доступ клиентам Internet к Вашим серверам (ftp,http и т п) (предварительно тщательно проверив защиту), то вы можете оставить открытыми соответствующие порты (см. /etc/service).

Все команды защиты Вы можете записать в отдельный командный файл (например /etc/rc.d/rc.firewall) и вызывать его при выходе системы в мультирежим из файла /etc/rc.d.rc.inet1.

Пример файла настройки защиты:

Выключение серверов на локальным машинах

Для того чтобы полностью закрыть доступ на локальной машине (речь идет о UNIX-машинах) к определенному сервису (например telnetd) достаточно в файле /etc/inetd.conf закомментировать строчку запуска данного сервера. В отличие от защитычерез firewall

  • Вам необходимо подправить файл /etc/inetd.conf на всех локальных машинах
  • Вы закрываетет доступ к серверу не только Internet’овских пользователей но и локальных.

Если Вы хотите лишь огранчить доступ к серверу, не выключая его, то Вам надо настроить TCP-wrapper (см. следующий раздел).

Wrapping

В ОС Linux при обращении из сети к TCP-порту суперсервер inetd вызывает не сам сервер, а программу tcpd, передавая ей параметром имя необходимого сервера (см. файл /etc/inetd.conf). Программа tcpd определяет IP-адрес клиента ищет этот адрес для указанного сервиса в файлах /etc/hosts.allow и /etc/hosts.deny. Если адрес найден в файле /etc/hosts.allow — клиенту разрешается доступ к указанному серверу, если же адрес найден в файле /etc/hosts.deny, то клиент не получает доступ к серверу. Например, если Вы хотите открыть доступ на сервер telnetd только с одной машины Вы добавляете в файл /etc/hosts.deny строку:

5 Заключение

Для более подробного ознакомления Вам следует ознакомиться с документацией через команду:

Источник

Русские Блоги

Как получить динамическую библиотеку linux-gate.so.1

фронт«Начало работы с приложением для Linux Helloworld»Было упомянуто, что каждый исполняемый файл в Linux зависит от нескольких основных динамических библиотек, одна из которых — linux-gate.so.1.

Из результатов, предоставленных ldd выше, можно увидеть, что эта динамическая библиотека linux-gate.so.1 немного отличается. Фактический путь к динамической библиотеке libc.so.6 — /lib/tls/i686/cmov/libc.so.6 , И ld-linux.so.2 находится в /lib/ld-linux.so.2. Тогда не могу не задать вопрос, а каков путь к динамической библиотеке linux-gate.so.1, какой файл находится в файловой системе? Фактически, этот файл отображается ядром, а файла динамической библиотеки нет.Для этой конкретной проблемы мы проведем подробный анализ позже, здесь только как получить динамическую библиотеку linux-gate.so.1.

Обычно, например, в системах suse10 и suse11 linux-gate.so.1 отображается в сегмент высокопроизводительной памяти ffffe000-fffff000. В настоящее время относительно просто экспортировать эту память в файл. Для этого можно использовать следующий сценарий:

#!/bin/bash VDSO_FILE_NAME=linux-gate.dso cat /proc/self/maps|grep «vdso» VDSO_ADDR=`cat /proc/self/maps|grep «vdso» |awk -F ‘-‘ ‘‘` echo «Current VDSO address is 0x$VDSO_ADDR» VDSO_BLOCK=`echo |awk ‘‘»,1,5)>’` ((SKIP_BLOCKS=16#$VDSO_BLOCK)) echo «We have $SKIP_BLOCKS blocks before VDSO library» echo «Ready to generate $VDSO_FILE_NAME from block $SKIP_BLOCKS» dd if=/proc/self/mem of=$VDSO_FILE_NAME bs=4096 skip=$SKIP_BLOCKS count=1 echo «Generate $VDSO_FILE_NAME Done»

Результат выполнения в системе suse:

> ./cat_linux_gate_so.sh ffffe000-fffff000 — p 00000000 00:00 0 [vdso] Текущий адрес VDSO — 0xffffe000 У нас есть 1048574 блока перед библиотекой VDSO Готов сгенерировать linux-gate.dso из блока 1048574 1 + 0 записей в 1 + 0 записей из скопировано 4096 байт (4,1 кБ), 4,2e-05 секунды, 97,5 МБ / с Создать linux-gate.dso Готово

> file -b linux-gate.dso 32-разрядный общий объект LSB ELF, Intel 80386, версия 1 (SYSV), лишенный

> objdump -T linux-gate.dso linux-gate.dso: формат файла elf32-i386 ТАБЛИЦА ДИНАМИЧНЫХ СИМВОЛОВ: ffffe400 ld .text 00000000 .text ffffe478 ld .eh_frame_hdr 00000000 .eh_frame_hdr ffffe49c ld .eh_frame 00000000 .eh_frame ffffe620 ld .useless 00000000 .useless ffffe400 g DF .text 00000014 LINUX_2. 5 __kernel_vsyscall 00000000 g DO * ABS * 00000000 LINUX_2.5 LINUX_2.5 ffffe440 g DF .text 00000007 LINUX_2.5 __kernel_rt_sigreturn ffffe420 g DF .text 00000008 LINUX_2.5 __kernel_sigreturn
В ubuntu ситуация более сложная, и здесь было отложено много времени, потому что адрес памяти, отображаемый в ubuntu, не фиксирован, а расположение каждого отображения процесса отличается.

cat /proc/self/maps|grep «vdso»
b7f47000-b7f48000 r-xp b7f47000 00:00 0 [vdso]

b7f5f000-b7f60000 r-xp b7f5f000 00:00 0 [vdso]

b7f54000-b7f55000 r-xp b7f54000 00:00 0 [vdso]

Следовательно, приведенный выше сценарий не может реализовать экспорт отображаемой памяти в одном процессе. Чтобы реализовать экспорт в том же процессе, здесь используется простой метод программирования на C.

Основной принцип такой же, как и в приведенном выше сценарии, первый проход / proc / self / maps находит адрес отображаемой памяти vsdo, а затем экспортирует отображенную память в файл linux-gate.dso.

int main (int argc, char ** argv) < FILE * pFile = NULL; void * paddr = NULL; буфер символов [BUFFER_SIZE]; адрес символа [BUFFER_SIZE]; блок символов [BLOCK_SIZE]; char c; int i, ineedreset, iblocks, iSize; pFile = fopen ("/ proc / self / maps", "r" ); if (NULL == pFile) < printf ("/ proc / self / maps fopen не удалось, ошибка! \ r \ n "); return 1; >/ * Найти местоположение памяти сопоставления динамической библиотеки vdso * / i = 0; ineedreset = 1; memset (buffer, 0, BUFFER_SIZE); while (1) < c = fgetc (pFile); if (c! = EOF) < printf ("% c", c); if (c == '\ r' || c == '\ n') < i = 0; ineedreset = 1; >else < if (ineedreset) < if (NULL! = strstr (buffer, "vdso")) < printf ("У меня есть vdso section. \ r \ n"); break; >memset (buffer, 0, BUFFER_SIZE); ineedreset = 0; > buffer [i ++] = c; > > else < break; >> printf («строка vsdo:% s \ r \ n», буфер); fclose (pFile); pFile = NULL; / * Получить начальный адрес * / memset (адрес, 0, BUFFER_SIZE); for (i = 0; buffer [i]! = ‘-‘; i ++) < address [i] = buffer [i]; if (buffer [i] == '-') break ; >paddr = (void *) Hex2Ulong (адрес); printf («Текущий адрес VDSO равен 0x% x \ r \ n», paddr); iblocks = (unsigned long) paddr / BLOCK_SIZE; code> printf («У нас есть% d блоков до библиотеки VDSO \ r \ n», iblocks); printf («Готов сгенерировать linux-gate.dso из блока% d \ r \ n «, iblocks); / * Экспорт динамического файла vdso * / pFile = fopen («. /linux-gate.dso «,» w «); if (NULL == pFile) < printf ("Ошибка fopen linux-gate.dso, выход! \ r \ n"); return 1; >printf («Head: 0x% x-% c-% c-% c \ r \ n», * ((char *) paddr + 0), * ((char *) paddr + 1), * ((char *) paddr + 2), * ((char *) paddr + 3)); memcpy (блок , paddr, BLOCK_SIZE); iSize = fwrite (block, 1, BLOCK_SIZE, pFile); if (BLOCK_SIZE! = iSize) < perror ("fwrite error: \ r \ n"); >printf («копировать% d /% d байтов из 0x% x в файл \ r \ n», iSize, BLOCK_SIZE, paddr); fclose (pFile); printf («Создать linux-gate.dso Done \ r \ n»); return 0; >

Затем посмотрите на результат экспорта:

Таким образом, мы можем экспортировать динамическую библиотеку в случае динамического сопоставления. Если app_linux_gate_so.c изменяется соответствующим образом, все отображенные библиотеки динамической памяти можно экспортировать для DEBUG и проверки.

Источник

Читайте также:  Как поставить mac os el capitan
Оцените статью