Разное

Freebsd статические маршруты: Статиская маршрутизация в FreeBSD

Содержание

Статиская маршрутизация в FreeBSD

Не так давно нужно было объединить 2 сети — обеспечить видимость серверов. Как-то до этого времени задач по маршрутизации не стояло. Эта небольшая статья о том как сделать статическую маршрутизацию на FreeBSD. Пример сети возьмем из хендбука:

RouterA — наш компьютер с FreeBSD, он же является маршрутизатором в Интернет. Его маршрут по умолчанию для связи с внешним миром 10.0.0.1. Собственно на его примере и покажу настройку маршрутизации.

RouterB в качестве шлюза использует 192.168.1.1, что видно из схемы.

Для начала посмотрим таблицу маршрутизации на RouterA (команда netstat -nr):

% netstat -nr
Routing tables
Internet:
Destination        Gateway         Flags    Refs      Use  Netif  Expire
default            10.0.0.1        UGS         0    49378    xl0
127.0.0.1          127.0.0.1       UH          0        6    lo0
10.0.0/24          link#1          UC          0        0    xl0
192.168.1/24       link#2          UC          0        0    xl1

Как видим, RouterA пока ничего не знает о внутренней сети 2 (Internal Net 2). Необходимо добавить маршрут в таблицу маршрутизации RouterA. В качестве маршрутизатора для сети 192.168.2.0 выступает хост с адресом 192.168.1.2 (RouterB). На RouterA даем слеющую команду:

# route add -net 192.168.2.0/24 192.168.1.2

Теперь RouterA сможет достучаться до любого хоста в сети 192.168.2.0/24. Однако, после перезагрузки FreeBSD, измененная маршрутная информация не сохранится. Теперь следует прописать наш маршрут в файл /etc/rc.conf. Для этого добавим следующие строки:


static_routes="internalnet2"
route_internalnet2="-net 192.168.2.0/24 192.168.1.2"

В переменной static_routes могут находиться строки, разделенные пробелами. Каждая строка соответствует имени маршрута. В примере static_routes содержит единственную строку — internalnet2. Переменная route_internalnet2, содержит все параметры, которые необходимо передать команде route для правильного добавления маршрута.

static_routes может содежать более одной строки. Таким образом создаются несколько статических маршрутов. В следующем примере показано добавление маршрутов для сетей 192.168.10.0/24 и 192.168.11.0/24 (адреса взяты просто для примера, не ищете на рисунке):


static_routes="net1 net2"
route_net1="-net 192.168.10.0/24 192.168.0.1"
route_net2="-net 192.168.11.0/24 192.168.1.1"

Ещё информацию по теме можно почитать в handbook: Сетевые шлюзы и маршруты

Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

Маршрутизация в FreeBSD от А до Я — команда route и nestat.

Маршруты во FreeBSD добавляются с помощью команды route.

Допустим необходимо добавить маршрут к сети 192.168.1.0/24, находящейся за маршрутизатором 192.168.0.10:

#route add -net 192.168.1.0/24 192.168.0.10

#route add -net 192.168.1.0/24 192.168.0.10

Можно также добавить маршрут через интерфейс em1 к сети 192.168.10.0/24(Если вы например забыли IP адрес интерфейса:

#route add -net 192.168.10.0/24 -interface em1

#route add -net 192.168.10.0/24 -interface em1

Добавленный таким образом маршруты, будут существовать только до перезагрузки сервера.Для того что бы они восстановились после перезагрузки, их необходимо прописать в /etc/rc.conf:

static_routes=»office1 office2″ route_office1=»-net 192.168.1.0 192.168.0.10″ route_office2=»-net 192.168.10.0 -interface em1″

static_routes=»office1 office2″

route_office1=»-net 192.168.1.0 192.168.0.10″

route_office2=»-net 192.168.10.0 -interface em1″

Для того что бы просмотреть таблицу маршрутизации нужно ввести в консоли команду

% netstat -nr Internet: Destination Gateway Flags Netif Expire Destination Gateway Flags Refs Use Netif Expire default 10.0.0.1 UGS 0 49378 xl0 127.0.0.1 127.0.0.1 UH 0 6 lo0 192.168.10/24 link#2 UC 0 0 xl1

% netstat -nr

 

Internet:

Destination Gateway Flags Netif Expire

Destination        Gateway         Flags    Refs      Use  Netif  Expire

default            10.0.0.1        UGS         0    49378    xl0

127.0.0.1          127.0.0.1       UH          0        6    lo0

192.168.10/24       link#2          UC          0        0    xl1

( Пока оценок нет )

Понравилась статья? Поделиться с друзьями:

Автоматизация работы со статическими маршрутами на сети FreeBSD-серверов / Хабр

С чего всё началось

В провайдере, где я работаю, так исторически сложилось, что клиентские сети затерминированы на FreeBSD-серверах со статической маршрутизацией в соединяющих эти сервера коммутационных полях. Соответственно, при добавлении новой сети маршруты для неё надо прописывать на всех серверах по отдельности. Добавив к этому человеческий фактор, может оказаться, что некоторые сервера при добавлении или изменении маршрута будут забыты и пропущены. В связи с этим логичным становится как-то автоматизировать этот процесс.

Реализация

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

192.168.1.1

mainserver.yourdomain.ru

Дальнейшую работу будет делать связка из двух shell-скриптов:
1) checkroute.sh [-c] destination gateway, где
-c — опция check-only (только проверить соответствие, не внося изменений),
destination — IP адрес или сеть назначения,
gateway — шлюз для адреса назначения.

Этот скрипт проверяет валидность введённых параметров скрипта и, подключаясь по очереди к каждому из серверов из списка по ssh, копирует на него второй скрипт и запускает его.

2) checker.sh destination gateway ifcheck

В свою очередь, проверяет текущую таблицу маршрутизации и конфигурационные файлы, докладывает о результатах проверки и, если первый скрипт был запущен без опции -c, приводит соответствующие записи в соответствие с парой destination/gateway.

checkroute.sh

Первым делом проверим опции, с которыми был запущен скрипт. На данный момент, обрабатывается только опция -c, но этот функционал легко расширяется по аналогии.

ifcheck="no"
while getopts "c" optname
	do case "$optname" in
		"c") ifcheck="check" ;;
		*)   echo "Usage: $0 [OPTIONS] DESTINATION GATEWAY
\t-c\tcheck route, don't correct it
"
			exit
			;;
		esac
	done
shift $(($OPTIND -1 ))

Следующим шагом будет проверка на валидность параметров DESTINATION и GATEWAY, переданных скрипту. Для наших целей необходимо, чтобы в качестве DESTINATION могли выступать IP адрес или сеть, а в качестве GATEWAY — только IP адрес.

validIPregexp="(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
checkip () {
	CHECK=$(echo $1 | grep -E "^$validIPregexp$2")
	if [ ! "$?" -eq 0 ]
		then
		echo "Incorrect $3: $1, please try again. "
		exit
		fi
}
checkip $1 "(/([0-2]?[0-9]|3[0-2]))?$" "destination IP address or network"
checkip $2 "$" "gateway"

Далее построчно читаем файл $serverlist и для каждого сервера из списка инициализируем подключение по ssh, копируем и запускаем скрипт checker.sh. В переменной $dir хранится путь до директории, в которой лежат файлы $serverlist и checker.sh

serverlist='servers.lst'
dir='/usr/local/etc/your_dir'
cat "${dir}/$serverlist" | while read server
	do
	echo "$server: "
	cat "${dir}/$checker.sh | ssh -q $server "rm -f /var/tmp/checker.sh ; cat - >> /var/tmp/checker.sh ; sh /var/tmp/checker.sh $1 $2 $ifcheck "
	done

checker.sh

Теперь рассмотрим, что же делает скрипт checker.sh, будучи запущенным на одном из наших серверов.
Функция, применяющая изменения, если скрипт script.sh был запущен без опции -c

ifcheck=$3
commit () {
	if [ $ifcheck != "check" ]
		then
		eval "$1" 2> /dev/null
		if [ ! $? -eq 0 ]
			then
			echo "Couldn't process the following command:
$1"
			else echo "$2"
			fi
		else echo "To correct it run this script without \"-c\" option or process the following command manually:
$1
"
		fi
}

Разбираем текущую таблицу маршрутизации (вывод netstat -rnW) и результат записываем в $CurrentGW

Возможные варианты:

1) Адрес назначения затерминирован на локальном интерфейсе ($CurrentGW=«LOCAL»)

2) Адрес назначения затерминирован где-то ещё и присутствует в таблице маршрутизации, тогда $CurrentGW будет присвоен текущий шлюз для этого адреса

3) Адрес назначения затерминирован где-то ещё и отсутствует в таблице маршрутизации. В таком случае, $CurrentGW останется пустой.

CurrentGW=`netstat -rnW | awk -v gw="$2" -v src="$1" '{ if ( $1 ~ src ) { if ( $2 ~ /'$validIPregexp'/ ) { if ( $2 !~ gw ) { print $2 } else { print "OK" } } else { print "LOCAL" } } }'`
if [ -z $CurrentGW ]
	then
	echo "Route for $1 does't exist."
	commit "sudo route add $1 $2" "Adding route."
	else
	case $CurrentGW in
	OK )  echo "Current route to $1 is $2 : OK" ;;
	LOCAL ) echo "It's on local interface" ;;
	* ) echo "Route for $1 exists but destination is wrong: $CurrentGW instead of $2 " ; commit "sudo route change $1 $2" "Changing it." ;;
	esac
	fi

Далее разбираем конфигурационный файл, полный путь к которому лежит в переменной $filename. Для этого выбираем из него все строки, описывающие добавление маршрутов, во временный файл и проверяем существование записи для адреса назначения. Проводится аналогично разбору вывода netstat -rnW выше.

filename='/usr/local/etc/rc.d/rc.script.for.adding.routes.sh'
cat "$filename" | grep -v '^#' | sed '/^$/d' | sed 's/[ \t]+/ /g' | grep -E 'route.+add' > /var/tmp/routes_temp.lst
FileGW=`cat /var/tmp/routes_temp.lst | grep $1 | awk -v gw="$2" '{  if ( $NF ~ gw ) { print "YES" } else { print $NF } }'`
if [ $CurrentGW = "LOCAL" ]
	then if [ ! -z $FileGW ]
		then
		echo "It's on local interface, but route for $1 was found in $filename. "
		commit "sudo sed -Ei '' '\:route[^\n]+add[^\n]+$1:' $filename" "Deleting it from there."
		fi
	else
	if [ -z $FileGW ]
		then
		echo "Checked $filename: no match. "
		t1=`tail -1 /var/tmp/routes_temp.lst | awk '{ print $(NF-1) }'`
		t2=`tail -1 /var/tmp/routes_temp.lst | awk '{ print $NF }'`
		IFS=''
		regex="\\:route[^\\n]+add[^\\n]+$t1[ \\t]+$t2:a\\
		/sbin/route -nq add $1 $2

		"
		commit "sudo sed -Ei '' '$regex2' $filename" "Adding route to the end of file"
		else
		if [ $FileGW != "YES" ]
			then
			echo "Record for route to $1 found, but gateway is wrong: $FileGW. "
			regex="s|$1[ \t]+$FileGW|$1 $2|g"
			commit "sudo sed -Ei '' '$regex2' $filename" "Changing gateway to $2"
			else echo "Correct route was found in $filename: OK"
			fi
		fi
fi

Хочу прояснить пару моментов из последнего куска кода. Переопределение системной переменной IFS понадобилоть для того, чтобы создать многострочную переменную $regex, что, в свою очередь, продиктовано синтаксисом sed. Такой способ добавления строки в файл был выбран потому, что в $filename маршруты могут добавляться внутри одной из функций, как это происходит в моём случае. Если же для вас это не критично, вы можете обойтись конструкцией вида

commit "sudo echo '/sbin/route -nq add $1 $2' >> $filename"

Заключение

Описанные выше скрипты можно адаптировать и под другие *nix системы, вся разница — в ключах sed (для Debian, например, -ri вместо -Ei «») и синтаксисе команды route (см. man route). Функционал скриптов, как было уже сказано выше, легко расширяется по аналогии.
В скриптах довольно много проверок («защита от дурака»), однако ответственность за правильность пары destination/gateway ложится на администратора, запускающего скрипт. Будьте бдительны!
Полные тексты обоих скриптов прилагаются: checkroute.sh, checker.sh

Тема 1

Тема 18. Маршрутизация.
(Настройка
FreeBSD в качестве маршрутизатора. Запуск демонов routed, gated . Команда route и статическая маршрутизация. Мосты)

 

Построение
маршрутизатора

 

Сетевой маршрутизатор
является обычной системой, которая пересылает пакеты с одного интерфейса на
другой. Стандарты Интернет и хорошая инженерная практика не позволяют Проекту
FreeBSD включать эту функцию по умолчанию во FreeBSD. Вы можете включить эту
возможность, изменив значение следующей переменной в YES в файле rc.conf(5):

gateway_enable=YES         
# Set to YES if this host will be a gateway

 

Этот
параметр изменит значение sysctl(8)-переменной net.inet.ip.forwarding в 1. Если
вам временно нужно выключить маршрутизацию, вы можете на время сбросить это
значение в 0.

 

Вашему
новому маршрутизатору нужна информация о маршрутах для того, чтобы знать, куда
пересылать трафик. Если ваша сеть достаточно проста, то вы можете использовать
статические маршруты. С FreeBSD также поставляется стандартный даемон BSD для
маршрутизации routed(8), который умеет работать с RIP (как версии 1, так и
версии 2) и IRDP. Поддержка BGP v4, OSPF v2 и других сложных протоколов
маршрутизации имеется в пакете net/zebra. Также существуют и коммерческие
продукты, применяемые как более комплексное решение проблемы маршрутизации в
сети, такие как GateD®.

 

Даже когда
FreeBSD настроена таким образом, она не полностью соответствует стандартным
требованиям Интернет для маршрутизаторов. Однако для обычного использования
такое неполное соответствие достаточно.

 

Настройка
статических маршрутов

24.2.5.1.
Ручная настройка

 

В этом
сценарии, RouterA это наш компьютер с FreeBSD, который выступает в качестве
маршрутизатора в сеть Интернет. Его маршрут по умолчанию настроен на 10.0.0.1,
что позволяет ему соединяться с внешним миром. Мы будем предполагать, что
RouterB уже правильно настроен и знает все необходимые маршруты (на этом
рисунке все просто; добавьте на RouterB маршрут по умолчанию, используя
192.168.1.1 в качестве шлюза).

 

Если мы
посмотрим на таблицу маршрутизации RouterA, то увидим примерно следующее:

%
netstat -nr

Routing
tables

 

Internet:

Destination       
Gateway            Flags    Refs      Use  Netif  Expire

default           
10.0.0.1           UGS         0    49378    xl0

127.0.0.1         
127.0.0.1          UH          0        6    lo0

10.0.0/24         
link#1             UC          0        0    xl0

192.168.1/24      
link#2             UC          0        0    xl1

 

С текущей
таблицей маршрутизации RouterA не сможет достичь внутренней сети 2 (Internal
Net 2). Один из способов обхода этой проблемы — добавление маршрута вручную.
Следующая команда добавляет внутреннюю сеть 2 к таблице маршрутизации RouterA с
192.168.1.2 в качестве следующего узла:

# route add
-net 192.168.2.0/24 192.168.1.2

 

Теперь
RouterA сможет достичь любого хоста в сети 192.168.2.0/24.

 

Мосты

 

Иногда
полезно разделить одну физическую сеть (такую, как сегмент Ethernet) на два
отдельных сегмента сети без необходимости создания подсетей IP и использования
маршрутизатора для соединения сегментов. Устройство, которое соединяет две сети
на такой манер, называется «сетевым мостом» («bridge»). Система FreeBSD с
двумя сетевыми адаптерами может выступать в роли моста.

 

Мост работает
на основе изучения адресов уровня MAC (адресов Ethernet) устройств на каждом из
своих сетевых интерфейсах. Он перенаправляет трафик между двумя сетями, только
когда адреса отправителя и получателя находятся в разных сетях.

 

По многим
параметрам мост работает также, как коммутатор Ethernet с малым количеством
портов.

 

Настройка
моста

 

24.5.3.1.
Выбор сетевого адаптера

 

Для работы
моста требуются по крайней мере два сетевых адаптера. К сожалению, не все
сетевые адаптеры во FreeBSD 4.0 поддерживают функции моста. Прочтите страницу
Справочника по bridge(4) для выяснения подробностей о поддерживаемых адаптерах.

 

Перед тем,
как продолжить, сначала установите и протестируйте два сетевых адаптера.

24.5.3.2.
Изменения в конфигурации ядра

 

Для
включения поддержки функций моста в ядре, добавьте строчку

options
BRIDGE

 

в файл
конфигурации вашего ядра, и перестройте ядро.

24.5.3.3.
Поддержка функций межсетевого экрана

 

Если вы
планируете использовать мост в качестве межсетевого экрана, вам нужно также
добавить опцию IPFIREWALL. Прочтите Разд. 14.8, содержащий общую информацию о
настройке моста в качестве межсетевого экрана.

 

Если вам
необходимо обеспечить прохождение не-IP пакетов (таких, как ARP) через мост, то
имеется опция межсетевого экрана, которую можно задать. Это опция
IPFIREWALL_DEFAULT_TO_ACCEPT. Заметьте, что при этом правило, используемое
межсетевым экраном по умолчанию, меняется на разрешительное для всех пакетов.
Перед тем, как задавать эту опцию, убедитесь, что вы понимаете работу вашего
набора правил.

24.5.3.4.
Поддержка функций ограничения пропускной способности

 

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

 

Демоны
TCP/IP

 

 

Демоны (или
серверы) — это процессы, которые работают в фоновом режиме и выполняют запросы
других процессов. Протокол управления передачей/Протокол Internet применяет
программы-демоны для выполнения определенных функций в операционной системе.
Эти программы работают в фоновом режиме, т.е. без прерывания других процессов
(если функция прерывания, выполняемая демоном, не предусматривается
специально).

 

Демоны
могут запускаться из командной строки, из сценариев и другими демонами. Вы
также можете управлять программами-демонами с помощью демона inetd, сценария
командного процессора rc.tcpip и Диспетчера ресурсов системы (SRC).

 

Подсистемы
и субсерверы

 

Подсистемами
называются демоны, работой которых управляет SRC. Субсервер — это демон,
который управляется подсистемой. (Команды и имена программ-демонов обычно
обозначаются буквой d в конце имени.) Понятия подсистемы и субсервера являются
взаимоисключающими. Это значит, что демон не может быть одновременно и подсистемой,
и субсервером. Единственной подсистемой TCP/IP, которая управляет другими
программами-демонами, является демон inetd. Все субсерверы TCP/IP являются
также субсерверами inetd.

 

SRC
управляет работой следующих демонов TCP/IP:

 

Программа routed
поставляется с любым клоном Unix и используется в качестве демона
протокола RIP по умолчанию. Как правило, она используется без аргументов и
запускается в момент загрузки операционной системы. Однако, если машина не
является шлюзом, то имеет смысл указать флаг «-q». Этот флаг
означает, что routed не будет посылать информации в сеть, а только будет
слушать информацию от других машин. Обычно, активными являются шлюзы, а все
остальные системы являются пассивными.

 

Однако,
часто бывает полезно при начальной загрузке инициализировать таблицу маршрутов
и определить строки, которые из нее не следует удалять ни при каких условиях.
Самый типичный случай — назначение шлюза по умолчанию. Для этой цели можно
использовать файл /etc/gateways, который программа routed просматривает при
запуске и использует для первоначальной настройки таблицы маршрутов. Содержание
этого файла может выглядеть следующим образом:

net 0.0.0.0
gateway 144.206.136.10 netric 1 passive

 

В данном
примере адрес 0.0.0.0 используется для определения адреса умолчания, машина
144.206.136.10 — это шлюз по умолчанию, метрика определяет число hop’ов до
этого шлюза, а параметр «passive» — говорит о том, что даже если с
этого шлюза никакой информации о маршрутах не приходит, то его все равно не надо
удалять из таблицы маршрутов. Последний параметр указывается в том случае, если
шлюз только один, если же возможно использование другого шлюза и эти шлюзы
активно извещают машины сети о своих таблицах маршрутов, то следует вместо
passive использовать active:

net 0.0.0.0
gateway 144.206.136.10 netric 1 active

 

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

 

Когда
используется только Ethernet, то программа routed может использоваться и на
машинах шлюзах, но если система связана с внешним миром через SLIP или PPP, то
использование routed может привести к потере самого главного маршрута. Он будет
удален из таблицы из соображений неактивности. В этом случае лучше всего
использовать программу gated.

 

2.9.4.
Программа gated

 

Gated — это
коллективный продукт американских университетов, который был разработан для
работы сети NFSNET. Права copyright закреплены за Корнельским университетом,
хотя части кода являются собственностью других университетов и ассоциаций.

 

Gated — это
модульная программа предназначенная организации много функционального шлюза,
который мог бы обслуживать как внутреннюю маршрутизацию, так и внешнюю. Gated
поддерживает протоколы RIP (версии 1 и 2), HELLO, OSPF версии 2, EGP версии 2 и
BGP версий от 2 до 4. Все перечисленные возможности относятся к версии 3.5. На
системах типа HPUX 9.x или IRIX 6.x могут стоять и более ранние версии, которые
всего этого набора протоколов могут и не поддерживать.

 

Рассмотрим
два основных примера использования gated в локальной сети: вместо routed на
обычной машине и на машине-шлюзе в другую сеть. При этом будем опираться на
следующую схему, изображенную на рисунке 2.25.

 

 

 

Рис. 2.25.
Подключение локальной сети к Internet и настройки gated

 

Gated
настраивается при помощи своего файла конфигурации /etc/gated.conf. Именно в
нем пишутся все команды настройки, которые gated проверяет при запуске.

 

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

#

#
Interface shouldn`t be removed from routing table

#

interface
144.206.160.40 passive ;

#

#
routing protocol is rip.

#

rip yes;

 

В
большинстве случаев достаточно просто указать протокол, т.к. интерфейс попадет
в таблицу маршрутизации после выполнения команды ifconfig.

 

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

#
Interfaces shouldn`t be removed from routing table

interface
144.206.160.32 passive ;

interface
144.206.130.137 passive ;

#
routing protocol is rip.

rip yes;

 

Однако
можно использовать и более сложное описание, основанное на логике работы gated.
А логика эта состоит в том , что gated объявляет соседним шлюзам по RIP, что
подсеть 144.206.160.0 доступна через интерфейс 144.206.130.137, в свою очередь
для подсети gated объявляет, что весь мир доступен через интерфейс
144.206.160.32. Очевидно, что это логика заимствована из архитектуры внешних
протоколов маршрутизации и распространена на протоколы внутренние. Это
позволяет вести описание маршрутов в едином ключе.

rip yes;

export 
proto rip interface 144.206.130.137

{

       
proto direct

       
{

               
announce 144.206.160.0 metric 0 ;

       
} ;

}
;

export
proto rip interface 144.206.160.32

{

       
proto rip interface 144.206.130.137

       
{

               
announce all ;

       
} ;

} ;

 

Первая
команда export анонсирует подсеть 144.206.160.0 через интерфейс
144.206.130.137. При этом сообщается, что это шлюз в данную подсеть, т.е.
интерфейс 144.206.130.137 расположен на машине, которая включена в эту подсеть.
О том, что пакеты для подсети надо посылать непосредственно на этот интерфейс
говорит предложение proto direct, а то, что интерфейс стоит на шлюзе в подсеть
говорит метрика, равная 0.

 

Второе
предложение сообщает всем машинам подсети через интерфейс 144.206.160.32 все
маршруты, которые данный шлюз получает из подсети 144.206.128.0 через интерфейс
144.206.130.137. Фактически осуществляется сквозная пересылка всей информации
во внутрь системы.

 

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

 

Важным
является и синтаксис предложений, который сильно смахивает на синтаксис языка
программирования С.

 

Во всех
руководствах по gated приводится еще один пример, когда сеть, через подсеть
подключают к Internet. Здесь приведем пример
из руководства к gated 3.5.

rip
yes;

export
proto rip interface 136.66.12.3 metric 3

{

       
proto rip interface 136.66.1.5

       
{

               
announce all ;

       
} ;

}
;

export
proto ripinterface 136.66.1.5

{

       
proto rip interface 136.66.12.3

        {

               
announce 0.0.0.0 ;

        } ;

{ ;

 

В данном
случае все, что gated получает из локальной сети через интерфейс 136.66.1.5
транслируется в подсеть, которая связывает данную сеть с Internet, через
интерфейс 136.66.12.3 (речь идет только о маршрутах, так как gated работает
только с таблицей маршрутов).

 

Второе
предложение export определяет куда следует отправлять информацию по умолчание
из сети, чтобы она достигла адресата, расположенного за пределами данной
локальной сети. Адрес 0.0.0.0, который соответствует любой машине за
интерфейсом 136.66.12.3 анонсируется через интерфейс 136.66.1.5. для всей
локальной сети.

 

И последние
замечания о gated. Они касаются возможности управлять доступом к машинам
локальной сети. Если маршрут доступа к машине или локальной подсети не
экспортировать во внешний мир, то о машине или подсети никто и не узнает.

 

Multirouting в FreeBSD — jnotes.ru

Настройка multirouting в FreeBSD.

На FreeBSD, выступающей в качестве шлюза, помимо всего прочего имеется интерфейс re1 (192.168.203.14/26) и интерфейс re3 (192.168.91.4/24). Оба эти интерфейса имеют доступ к сети 192.168.91.0/24, но у каждого интерфейса эта сеть своя, т.е. это две сети в разном VRF. Необходимо организовать доступ к этим сетям так, что бы каждый интерфейс видел свою сеть.

Реализация

На FreeBSD это можно реализвать с помощью утилиты setfib (доступна с версии FreeBSD7). Для того, что бы реализовать поддержку multirouting, нужно пересобрать ядро с «options ROUTETABLES=2». На данный момент максимально поддерживается до 16 независимых таблиц маршрутизации, поэтому есть смысл подумать про запас.

FIB — forwarding information base или forwarding table, проще говоря таблица маршрутизации.

Все маршруты, которые задавались командой
# route add ...
попадают в fib 0 (по-умолчанию).

Для того, чтобы прописать маршрут в другую таблицу необходимо выполнить
# setfib 1 route add

У меня имеется 2 интерфейса, с маршрутами которых надо разобраться:

re1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
    ether 52:54:00:66:9d:3d
    inet 192.168.203.14 netmask 0xfffffff0 broadcast 192.168.203.15
    media: Ethernet autoselect (100baseTX )
    status: active
re3: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
    ether 52:54:00:af:76:12
    inet 192.168.91.4 netmask 0xffffff00 broadcast 192.168.91.255
    media: Ethernet autoselect (100baseTX )
    status: active

Проверяю таблицы маршрутизации. Таблица большая, а меня интересует только то, что касается сети 192.168.91.0/24 и сам интерфейс.
# netstat -rn

Routing tables
 
Internet:
Destination		Gateway			Flags	Refs	Use	Netif Expire
...
192.168.91.4		lo0			UHS		0	0	lo0
192.168.91.0/24		52:54:00:af:76:12	US		0	0	re3
...

Теперь проверяю fib 1 маршруты
# setfib 1 netstat -rn

В нем по-умолчанию описаны все интерфейсы:

Routing tables
 
Internet:
Destination		Gateway		Flags	Refs	Use	Netif Expire
127.0.0.1		link#7		UH		0	0	lo0
192.168.0.0/16		192.168.203.1	UGS		0	3	re1
192.168.91.0/24		link#5		U		0	20	re3
192.168.203.0/28	link#3		U		0	0	re1

Теперь мне надо прояснить как все должно выглядеть в идеальном случае. Итак, fib 0 должна содержать все маршруты и интерфейсы, кроме re3. fib 1 наоборот должна содержать re1 (остальные, в том числе default — по необходимости)

При создании интерфейса re3 в fib 1 создается лишний маршрут — 192.168.91.0/24 (этот диапазон у меня описан в 192.168.0.0/16). Значит при описании статических маршрутов в rc.conf его нужно будет убивать.
Это можно сделать с помощью /etc/rc.local. Согласно /etc/rc.d/local, этот файл будет обрабатываться при загрузке.

Содержание /etc/rc.local:

#!/bin/sh
setfib 1 route add 192.168.0.0/16 192.168.203.1
setfib 1 route delete 192.168.91.0/24

Теперь мне надо разобраться с входящим трафиком.
Допустим, что трафик идет с 192.168.91.2 на 192.168.203.14 через интерфейс re1 и соответственно должен уходить через этот же интерфейс. Однако, в соответствии с release-notes:

«A packet received on an interface for forwarding uses FIB #0.»

И там же сказано:

ipfw setfib fibnum
will make the matched packet use the FIB specified in fibnum. The rule processing continues at the next rule.

Значит мне в правилах ipfw надо прописать:

${fwcmd} add 25 setfib 1 ip from { 192.168.0.0/16 } to 192.168.203.14 in recv re1

Эта запись говорит о том, что пакеты, которые пришли из сети 192.168.0.0/16 на адрес 192.168.203.14 через интерфейс re1 должны использовать fib1 По идее с исходящими пакетами нужно делать тоже самое, однако я не до конца вкурил каким образом это работает. Например udp пакеты от ntp сервера с адреса 192.168.203.14 на адрес 192.168.91.2 уходили через re3, а должны через re1. Помогла следующая запись, но нужно это сделать через setfib, иначе при изменении шлюза придется прописывать его и в маршрутах и в правилах ipfw. А это не правильно.

${fwcmd} add 3013 fwd 192.168.203.1 ip from 192.168.203.14 to 192.168.0.0/16

Итого

Добавить в ядро поддержку multirouting, прописав «options ROUTETABLES=2»
Внести все необходимые записи в таблицы маршрутизации с помощью «setfib 0 route add …» и «setfib 1 route add»
Для того, что бы изменения вступали в силу при перезагрузке можно использовать «/etc/rc.local»
В правила firewall внести изменения для привязки пакетов, попадающих под условие к определенной fib

Проверка

Фокус заключается в том, что теперь ping 192.168.91.2 может идти либо через re1, либо через re3:

# setfib 0 ping 192.168.91.2
пойдет через таблицу маршрутизации по умолчанию (0), и соответственно через интерфейс re3

# setfib 1 ping 192.168.91.2
пойдет через первую таблицу маршрутизации, и соответственно через интерфейс re1

# tcpdump -i [interface] icmp

Покажет как бегают пакеты
для того чтобы не набирать каждый раз
# setfib 1 telnet [host]
в /etc/profile добавляю новые alias

t() {
setfib 1 telnet $@
}
p() {
setfib 1 ping $@
}

Проверяю, что команды p и t работают как надо

sshd

Встала проблема в организации доступа по ssh через таблицу маршрутизации, отличной от 0 (по-умолчанию).
Попытка заставить работать это дело через ipfw с указанием setfib 1 на различные варианты пакетов ожидаемого результата не принесло. (возможно, плохо курил, ибо по идее это должно решаться именно там)
Решение заключается в том, что я запускаю два sshd демона на разных интерфейсах. Создаю два конфигурационных файла, например sshd_config, sshd_config_fib1, для sshd в одном указываю

ListenAddress [ip1]

Во втором

ListenAddress [ip2]

Первый демон будет запускаться по /etc/rc.d/sshd, а второй прописываю в rc.local

setfib 1 /usr/sbin/sshd -f /etc/ssh/sshd_config_fib1

в итоге получаю два сокета
root sshd 21183 3 tcp4 [ip1]:22 *:*
root sshd 14733 3 tcp4 [ip2]:22 *:*

каждый из них висит использую свою таблицу маршрутизации.

Записки старого админа » Статические маршруты в FreeBSD

Как то я уже писал об этом, но сейчас хочется немного по подробнее.

Как указать статические маршруты на FreeBSD сервере, который работает в качестве шлюза.

Вариантов может быть несколько, но сегодня я хочу рассмотреть 2 из них.

1й вариант — это создание записей в файле /etc/rc.conf такого вида:

# cat /etc/rc.conf | grep route
static_routes="admin lan1 lan2 lan3"
route_admin="-host 192.168.5.58/32 10.10.1.254"
route_lan1="-net 10.10.10.0/24 10.10.1.254"
route_lan2="-net 10.10.2.0/24 10.10.1.254"
route_lan3="-net 192.168.0.0/16 10.10.1.254"

# cat /etc/rc.conf | grep route
static_routes=»admin lan1 lan2 lan3″
route_admin=»-host 192.168.5.58/32 10.10.1.254″
route_lan1=»-net 10.10.10.0/24 10.10.1.254″
route_lan2=»-net 10.10.2.0/24 10.10.1.254″
route_lan3=»-net 192.168.0.0/16 10.10.1.254″

2й вариант — это создать файл с маршрутами, дать ему права на исполнение и поставить его в автозапуск.

# cat /usr/local/etc/rc.d/statroute.sh
#!/bin/sh
/sbin/route add -host 192.168.5.58/32 10.10.1.254
/sbin/route add -net 10.10.10.0/24 10.10.1.254
/sbin/route add -net 10.10.2.0/24 10.10.1.254
/sbin/route add -net 192.168.0.0/16 10.10.1.254
# ls -l /usr/local/etc/rc.d/statroute.sh
-r-xr-xr-x  1 root  wheel  5436 Nov  4 01:23 /usr/local/etc/rc.d/statroute.sh

# cat /usr/local/etc/rc.d/statroute.sh
#!/bin/sh
/sbin/route add -host 192.168.5.58/32 10.10.1.254
/sbin/route add -net 10.10.10.0/24 10.10.1.254
/sbin/route add -net 10.10.2.0/24 10.10.1.254
/sbin/route add -net 192.168.0.0/16 10.10.1.254
# ls -l /usr/local/etc/rc.d/statroute.sh
-r-xr-xr-x 1 root wheel 5436 Nov 4 01:23 /usr/local/etc/rc.d/statroute.sh

Еще есть варианты динамической или статической маршрутизации, или например, автоматической маршрутизации управляемой специальными демонами и протоколами. Допустим с использованием такого программного обеспечения, как GNU Zebra. Которая, способна автоматически переключать маршруты в зависимости от того какой сейчас живой канал или динамически разруливать маршрутизацию, а при пропадании одного из каналов перекидывать маршруты через другой канал и при появлении возвращать назад. Но об этом немного позже будет написано в другой статье.

Напоминаю всем копирующим мой контент о существовании закона «Об авторском праве».
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/1356


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво 😉

Кошельки для получения благодарности:

R386985788805

U234140473141

Z147712360455

создание статических маршрутов или изменение шлюза по умолчанию на Linux — Information Security Squad

Команда IP route является расширением команды IP,  которую мы уже кратко обсуждали команды IP в нашем предыдущем уроке.

Команда IP route используется для добавления, удаления или изменения таблицы маршрутизации системы Linux.

Команда Ip route на Linux

Чтобы проверить текущую таблицу маршрутизации системы, мы можем использовать следующие команды:

# route

Kernel IP routing table

Destination      Gateway       Genmask             Flags       Metric       Ref       Use      Iface

10.10.1.0           0.0.0.0         255.255.255.0    U               0                0           0          enp0s3

или

# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3

0.0.0.0 10.10.1.10 0.0.0.0 UG 0 0 0 enp0s3

Мы также можем использовать следующую команду для проверки маршрутов:

# ip route show

Назначенный системный IP для системы — 10.10.1.100, и мы можем видеть, что пункт назначения находится в этом диапазоне только в первом выводе команды.

Вторая команда также показывает шлюз для диапазона IP, то есть 10.10.1.10.

Файлы маршрутизации находятся в папке «/etc/sysconfig/network-scripts/»:

# cat /etc/sysconfig/network-scripts/route-enp0s3

10.10.1.0/24 via 10.10.1.10 dev enp0s3

2- Как создать новый роутинг, т.е. создать новый статический маршрут.

# ip route add 10.10.3.0/24 dev en0sp3

И мы хотим, чтобы эта сеть направлялась от определенного шлюза:

# ip route add 10.10.3.0/24 via 10.10.1.10 dev en0sp3

3- Удалить маршрут

Чтобы удалить роут:

# ip route delete 10.10.3.0//24 dev en0sp3

4- Удалить существующий шлюз по умолчанию

Чтобы удалить существующий шлюз по умолчанию системы:

# ip route delete default

То же самое можно сделать с помощью команды:

# route delete default

5- Как добавить новый шлюз по умолчанию

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

# route add default gw 10.10.1.20

или мы также можем использовать следующую команду:

# ip route add default via 10.10.1.20

6- Как отклонить сетевые пакеты для конкретного хоста или сети

Мы также можем использовать команду IP route для запрета сетевого трафика на конкретном хосте или даже для диапазона сети.

Чтобы отклонить сетевые пакеты для одного хоста:

# route add -host 10.10.2.20 reject

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

# route add -net 10.10.2.0 netmask 255.0.0.0 reject

Мы обсудили только некоторые важные примеры использования для управления маршрутами в нашей системе.

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

31.2. Шлюзы и маршруты

Предоставлено Coranth Gryphon.

Маршрутизация — это механизм, который позволяет
система для поиска сетевого пути к другой системе. А
маршрут — определенная пара адресов
которые представляют собой «пункт назначения» и
«Шлюз». Маршрут указывает, что при попытке
чтобы добраться до указанного пункта назначения, отправьте пакеты через
указанный шлюз. Есть три типа направлений:
отдельные хосты, подсети и «по умолчанию».В
«Маршрут по умолчанию» используется, если другие маршруты не применяются.
Также есть три типа шлюзов: отдельные хосты,
интерфейсы, также называемые ссылками, и оборудование Ethernet
(MAC) адреса. Известные маршруты хранятся в
таблица маршрутизации.

В этом разделе представлен обзор основ маршрутизации. Это
затем демонстрирует, как настроить систему FreeBSD в качестве маршрутизатора и
предлагает несколько советов по устранению неполадок.

Для просмотра таблицы маршрутизации системы FreeBSD используйте
netstat (1):

 %    netstat -r  
Таблицы маршрутизации

Интернет:
Флаги целевого шлюза Refs Use Netif Expire
по умолчанию снаружи-gw UGS 37 418 em0
локальный хост локальный хост UH 0 181 lo0
test0 0: e0: b5: 36: cf: 4f UHLW 5 63288 re0 77
10.20.30.255 ссылка №1 UHLW 1 2421
example.com ссылка # 1 UC 0 0
host1 0: e0: a8: 37: 8: 1e UHLW 3 4601 lo0
host2 0: e0: a8: 37: 8: 1e UHLW 0 5 lo0 =>
host2.example.com ссылка # 1 UC 0 0
224 ссылка # 1 UC 0 0 

В этом примере представлены следующие записи:

по умолчанию

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

Если пункт назначения не соответствует записи, или если
все известные пути не работают, система использует запись для
маршрут по умолчанию. Для хостов в локальной сети
Шлюз в маршруте по умолчанию
установлен в систему, которая имеет прямое подключение к
Интернет.При чтении этой записи убедитесь, что
Флаги Столбец указывает, что
шлюз можно использовать ( UG ).

Маршрут по умолчанию для машины, которая сама
функционирование в качестве ворот во внешний мир будет
машина шлюза у интернет-провайдера
(Интернет-провайдер).

localhost

Второй маршрут — это localhost
маршрут. Интерфейс, указанный в
Netif колонка для
localhost — это
lo0 , также известный как петлевой
устройство.Это означает, что весь трафик для этого
пункт назначения должен быть внутренним, а не отправляемым
по сети.

MAC-адрес

Адреса, начинающиеся с 0: e0: , являются
MAC-адреса. FreeBSD будет
автоматически определять любые хосты,
test0 в примере, на
локальный Ethernet и добавьте маршрут для этого хоста через
Интерфейс Ethernet, re0 . Этот тип
маршрута имеет тайм-аут, что видно в
Expire column, который используется, если
хост не отвечает в течение определенного времени.Когда это произойдет, маршрут к этому хосту будет
автоматически удаляется. Эти хосты идентифицируются с помощью
Протокол информации о маршрутизации
(RIP), который рассчитывает маршруты к
локальные хосты на основе кратчайшего пути
определение.

подсеть

FreeBSD автоматически добавит маршруты подсети для
локальная подсеть. В этом примере 10.20.30.255 — это
широковещательный адрес для подсети 10.20.30 и
пример.com — это
доменное имя, связанное с этой подсетью. В
обозначение ссылка # 1 относится к
первая карта Ethernet в машине.

Узлы локальной сети и локальные подсети имеют свои
маршруты автоматически настраиваются демоном с именем
маршрутизируется (8). Если он не запущен, только маршруты, которые
статически определены администратором
существовать.

хост

Строка host1 относится к хосту
по его адресу Ethernet.Поскольку это хост-отправитель,
FreeBSD знает, как использовать интерфейс loopback
( lo0 ), а не Ethernet
интерфейс.

Две строки host2 представляют
псевдонимы, созданные с помощью ifconfig (8). В
=> символ после
lo0 интерфейс говорит, что псевдоним
был установлен в дополнение к адресу обратной связи. Такие
маршруты отображаются только на хосте, который поддерживает псевдоним
и все остальные хосты в локальной сети будут иметь
ссылка №1 линия для таких маршрутов.

224

Последняя строка (подсеть назначения 224 ) касается
многоадресная рассылка.

Различные атрибуты каждого маршрута можно увидеть в
Флаги колонны. Таблица31.1, «Часто встречающиеся флаги таблицы маршрутизации»
суммирует некоторые из этих флагов и их значения:

Таблица 31.1. Часто встречаемые флаги таблицы маршрутизации

Команда Цель
U Маршрут активен.
H Пункт назначения маршрута — одиночный хост.
G Отправить что-либо для этого пункта назначения на этот
шлюз, который будет определять оттуда, куда
Отправь это.
S Этот маршрут был настроен статически.
C Клонирует новый маршрут на основе этого маршрута для
машины для подключения. Этот тип маршрута
обычно используется для локальных сетей.
W Маршрут был настроен автоматически на основе локального
маршрут локальной сети (клон).
L Маршрут включает ссылки на Ethernet (ссылка)
оборудование.

В системе FreeBSD маршрут по умолчанию может быть определен в
/etc/rc.conf , указав
IP-адрес шлюза по умолчанию:

 defaultrouter = "10.20.30.1" 

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

  #    route add default 10.20.30.1   

Обратите внимание, что добавленные вручную маршруты не сохранятся после перезагрузки.Для получения дополнительной информации о ручном управлении сетью
таблицы маршрутизации, см. route (8).

31.2.2. Настройка маршрутизатора со статическими маршрутами

Предоставлено Al Hoang.

Система FreeBSD может быть настроена как шлюз по умолчанию, или
маршрутизатор для сети, если это система с двойным подключением. А
двухкомпонентная система — это хост, который находится как минимум на двух
разные сети. Обычно каждая сеть подключена к
отдельный сетевой интерфейс, хоть IP
псевдонимы можно использовать для привязки нескольких адресов, каждый из которых
разные подсети к одному физическому интерфейсу.

Для того, чтобы система пересылала пакеты между
интерфейсов, FreeBSD должна быть настроена как маршрутизатор. Интернет
стандарты и хорошая инженерная практика мешают FreeBSD
Проект от включения этой функции по умолчанию, но это может быть
настроен на запуск при загрузке, добавив эту строку в
/etc/rc.conf :

 gateway_enable = "YES" # Установите YES, если этот хост будет шлюзом. 

Чтобы включить маршрутизацию сейчас, установите переменную sysctl (8)
net.inet.ip.переадресация на
1 . Чтобы остановить маршрутизацию, сбросьте эту переменную на
0 .

Таблица маршрутизации маршрутизатора требует дополнительных маршрутов, поэтому
он знает, как связаться с другими сетями. Маршруты могут быть либо
добавлены вручную с использованием статических маршрутов или маршруты могут быть
автоматически запоминается с использованием протокола маршрутизации. Статические маршруты
подходят для небольших сетей, и в этом разделе описывается
как добавить запись статической маршрутизации для небольшой сети.

Примечание:

Для больших сетей статические маршруты быстро становятся
немасштабируемый.FreeBSD поставляется со стандартным
Демон маршрутизации BSD routed (8), который
предоставляет протоколы маршрутизации RIP,
версии 1 и 2, а также IRDP. Поддержка для
BGP и OSPF
протоколы маршрутизации могут быть установлены с помощью
net / zebra пакет или порт.

Рассмотрим следующую сеть:

В этом сценарии RouterA является
Машина FreeBSD, которая действует как маршрутизатор для остальной части
Интернет. Маршрут по умолчанию установлен на 10.0.0.1 , что позволяет ему
соединиться с внешним миром. RouterB уже настроен для использования
192.168.1.1 в качестве своего
шлюз по умолчанию.

Перед добавлением любых статических маршрутов таблица маршрутизации
RouterA выглядит так:

 %    netstat -nr  
Таблицы маршрутизации

Интернет:
Флаги целевого шлюза Refs Use Netif Expire
по умолчанию 10.0.0.1 UGS 0 49378 xl0
127.0.0.1 127.0.0.1 UH 0 6 lo0
10.0.0.0 / 24 ссылка # 1 UC 0 0 xl0
192.168.1.0/24 link # 2 UC 0 0 xl1 

С текущей таблицей маршрутизации,
Маршрутизатор A не имеет маршрута к
192.168.2.0/24
сеть. Следующая команда добавляет внутреннюю сеть
2 сети
на маршрутизатор A
таблица маршрутизации с использованием 192.168.1.2 в качестве следующего
hop:

  #    маршрут add -net 192.168.2.0/24 192.168.1.2   

Теперь RouterA может подключиться к любому хосту
в сети 192.168.2.0/24 .
Однако информация о маршрутизации не сохранится, если FreeBSD
система перезагружается. Если статический маршрут должен быть постоянным, добавьте
это в /etc/rc.conf :

 # Добавить Internal Net 2 в качестве постоянного статического маршрута
static_routes = "internalnet2"
route_internalnet2 = "- net 192.168.2.0/24 192.168.1.2" 

Конфигурация static_routes
переменная — это список строк, разделенных пробелом, где каждая
строка ссылается на имя маршрута.Переменная
маршрут_ внутренняя сеть2
содержит статический маршрут для этого имени маршрута.

Использование более одной строки в
static_routes создает несколько статических
маршруты. Ниже показан пример добавления статического
маршруты для 192.168.0.0/24 и
192.168.1.0/24
сетей:

 static_routes = "net1 net2"
route_net1 = "- сеть 192.168.0.0/24 192.168.0.1"
route_net2 = "- net 192.168.1.0/24 192.168.1.1" 

Когда адресное пространство назначается сети,
поставщик услуг настраивает свои таблицы маршрутизации так, чтобы все
трафик для сети будет направляться по ссылке для сайта.Но как внешние сайты узнают, что нужно отправлять свои пакеты
интернет-провайдер сети?

Есть система, которая отслеживает все назначенные
адресных пространств и определяет их точку подключения к
Магистральная сеть Интернета или основные магистральные линии, по которым осуществляется Интернет.
трафик по стране и по миру. Каждый
на базовой машине есть копия основного набора таблиц, который
направлять трафик из определенной сети в конкретную
магистральный оператор, а оттуда вниз по цепочке обслуживания
провайдеров, пока он не достигнет определенной сети.

Задача поставщика услуг — рекламировать
магистральные сайты, которые являются точкой подключения, и
таким образом путь внутрь, для сайта. Это известно как маршрут
размножение.

Иногда возникает проблема с распространением маршрута и
некоторые сайты не могут подключиться. Пожалуй, самый полезный
команда для попытки выяснить, где нарушается маршрутизация
вниз — это traceroute . Это полезно, когда
ping не работает.

При использовании traceroute включите
адрес удаленного хоста для подключения.Результат будет
показать хосты шлюза по пути попытки,
в конечном итоге либо достигнет целевого хоста, либо завершится
из-за отсутствия связи. Для получения дополнительной информации см.
в traceroute (8).

31.2.4. Рекомендации по многоадресной рассылке

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

 options MROUTING 

Демон многоадресной маршрутизации,
mrouted можно установить с помощью
net / mrouted пакет или порт.Этот демон
реализует многоадресную маршрутизацию DVMRP
протокол и настраивается путем редактирования
/usr/local/etc/mrouted.conf , чтобы
настраивал туннели и DVMRP. В
установка роутинга также
устанавливает map-mbone и
mrinfo, а также связанные с ними
страницы руководства. См. Примеры конфигурации.

Примечание:

DVMRP в значительной степени заменен на
протокол PIM во многих многоадресных
установки. См. Pim (4) для получения дополнительной информации.
Информация.

.

шлюзов и маршрутов

Внесено
пользователя Coranth Gryphon.

Чтобы одна машина могла найти другую по сети,
должен быть механизм, описывающий, как получить
от одного к другому. Это называется маршрутизацией . « Маршрут » — это определенная пара
адреса: « пункт назначения » и « шлюз ». Пара
означает, что если вы пытаетесь добраться до пункта назначения ,
общаться через этот шлюз .Есть три типа
назначения: отдельные хосты, подсети и « по умолчанию ». В
« маршрут по умолчанию » используется, если ни один из других маршрутов не подходит.
Позже мы еще поговорим о маршрутах по умолчанию.
Также есть три типа шлюзов: отдельные хосты,
интерфейсы (также называемые « ссылки ») и оборудование Ethernet
адреса (MAC-адреса).

Чтобы проиллюстрировать различные аспекты маршрутизации, мы будем использовать
следующий пример из netstat:

    %  netstat -r 
    Таблицы маршрутизации
    
    Флаги целевого шлюза Refs Use Netif Expire
    
    по умолчанию снаружи-gw UGSc 37 418 ppp0
    локальный хост локальный хост UH 0 181 lo0
    test0 0: e0: b5: 36: cf: 4f UHLW 5 63288 ed0 77
    10.20.30.255 ссылка №1 UHLW 1 2421
    example.com ссылка # 1 UC 0 0
    host1 0: e0: a8: 37: 8: 1e UHLW 3 4601 lo0
    host2 0: e0: a8: 37: 8: 1e UHLW 0 5 lo0 =>
    host2.example.com ссылка # 1 UC 0 0
    224 ссылка # 1 UC 0 0
 

Первые две строки указывают маршрут по умолчанию (который мы
будет рассмотрено в следующем разделе), а
localhost маршрут.

Интерфейс (столбец Netif)
что эта таблица маршрутизации указывает для использования для localhost — это lo0, также известное как устройство обратной связи.
Это говорит о том, что весь трафик для этого пункта назначения
внутренняя, а не отправка по локальной сети, поскольку она
только вернется туда, где он был начат.

Следующее, что выделяется, — это адреса
начиная с 0: e0 :. Эти
Аппаратные адреса Ethernet, также известные как MAC.
адреса.FreeBSD автоматически идентифицирует любые хосты
(test0 в примере) на локальном
Ethernet и добавьте маршрут для этого хоста прямо к нему через
интерфейс Ethernet, ed0.
Также есть таймаут (Expire
столбец), связанный с этим типом маршрута, который используется
если мы не получим ответа от хозяина в определенном количестве
время. Когда это произойдет, маршрут к этому хосту будет
автоматически удаляется. Эти хосты идентифицируются с помощью
механизм, известный как RIP (протокол информации о маршрутизации),
который определяет маршруты к локальным хостам на основе
определение кратчайшего пути.

FreeBSD также добавит маршруты подсети для локальной подсети.
(20.10.30.255 — трансляция
адрес для подсети 10.20.30,
а example.com — это доменное имя
связанный с этой подсетью). Ссылка обозначения №1 относится к первой карте Ethernet в
машина. Вы заметите, что никакого дополнительного интерфейса нет.
указан для тех.

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

Строка host1 относится к нашему
хост, который ему известен по адресу Ethernet. Поскольку мы
хост-отправитель, FreeBSD знает, как использовать интерфейс обратной связи
(lo0) вместо отправки
через интерфейс Ethernet.

Две линии host2 являются
пример того, что происходит, когда мы используем
ifconfig (8) псевдоним (см.
раздел об Ethernet по причинам, по которым мы это сделали).Символ => после интерфейса lo0 говорит о том, что не только
мы используем loopback (поскольку этот адрес также относится
на локальный хост), но конкретно это псевдоним. Такие
маршруты отображаются только на том хосте, который поддерживает псевдоним;
у всех остальных хостов в локальной сети будет просто линия link # 1 для таких маршрутов.

Последняя строка (подсеть назначения 224) касается многоадресной рассылки, которая будет
рассматривается в другом разделе.

Наконец, различные атрибуты каждого маршрута можно увидеть в
столбец Флаги.Ниже короткое
таблица некоторых из этих флагов и их значений:

U Вверх: Маршрут
активный.
H Хост: Маршрут
пункт назначения — один хост.
G Шлюз: Отправить
что-нибудь для этого пункта назначения на этот пульт
система, которая будет определять оттуда, куда
Отправь это.
S Статический: этот маршрут
был настроен вручную, а не автоматически
генерируется системой.
С Клон: создает
новый маршрут на основе этого маршрута для машин, которые мы
соединить с. Этот тип маршрута обычно используется для
локальные сети.
Вт WasCloned: указано
маршрут, который был настроен автоматически на основе локального
маршрут локальной сети (клонировать).
л Ссылка: Маршрут включает
ссылки на оборудование Ethernet.

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

Если все известные пути терпят неудачу, у системы есть последний вариант:
маршрут « по умолчанию ». Этот маршрут — особый тип
маршрут шлюза (обычно единственный присутствует в системе),
и всегда отмечен буквой c в
поле флагов. Для хостов в локальной сети это
шлюз установлен на любую машину, имеющую прямое соединение
во внешний мир (через PPP, DSL, кабель
модем, T1 или другой сетевой интерфейс).

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

Давайте посмотрим на пример маршрутов по умолчанию. Это
общая конфигурация:

[Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW]

Хосты Local1 и Local2 находятся на вашем сайте. Local1 подключен к интернет-провайдеру через модем
PPP-соединение. Этот компьютер-сервер PPP подключен
через локальную сеть на другой компьютер-шлюз
через внешний интерфейс к интернет-провайдерам
корм.

Маршруты по умолчанию для каждой из ваших машин будут
быть:

Хост Шлюз по умолчанию Интерфейс
Местный 2 местный 1 Ethernet
Местный 1 T1-GW PPP

Часто задаваемый вопрос: « Почему (или как) мы должны установить
T1-GW будет шлюзом по умолчанию для Local1, а не
Сервер интернет-провайдера, к которому он подключен? ».

Помните, поскольку интерфейс PPP использует адрес на
локальная сеть интернет-провайдера для вашей стороны соединения,
маршруты для любых других машин в локальной сети провайдера
будет автоматически сгенерирован. Следовательно, вы уже будете
знать, как добраться до машины T1-GW, поэтому нет необходимости
для промежуточного этапа отправки трафика к провайдеру
сервер.

В качестве заключительного примечания, адрес X.X.X.1 обычно используется в качестве адреса шлюза для вашего
локальная сеть.Итак (используя тот же пример), если ваш местный
адресное пространство класса C было 10.20.30
а ваш интернет-провайдер тогда использовал 10.9.9
маршруты по умолчанию:

Хост Маршрут по умолчанию
Местный2
(10.20.3.2)
Местный1
(10.20.30.1)
Локальный1 (20.10.30.1,
10.9.9.30)
T1-GW (10.9.9.1)

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

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

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

Если вы хотите, чтобы эта машина действительно пересылала пакеты
между двумя интерфейсами вам нужно указать FreeBSD
включить эту возможность.

Сетевой маршрутизатор — это просто система, которая пересылает
пакеты от одного интерфейса к другому.Интернет-стандарты
и хорошая инженерная практика предотвращают проект FreeBSD
от включения этого параметра по умолчанию во FreeBSD. Вы можете включить
эту функцию, изменив следующую переменную на YES в
rc.conf (5):

    gateway_enable = YES # Установите YES, если этот хост будет шлюзом
 

Эта опция устанавливает
sysctl (8) переменная net.inet.ip.forwarding в 1. Если вам нужно остановить маршрутизацию
временно, вы можете временно сбросить это значение до 0.

Вашему новому маршрутизатору потребуются маршруты, чтобы знать, куда отправлять
трафик. Если ваша сеть достаточно проста, вы можете использовать
статические маршруты. FreeBSD также поставляется со стандартной BSD
демон маршрутизации
routed (8), что говорит
RIP (как версия 1, так и версия 2) и IRDP. Для большего
сложные ситуации, которые вы можете попробовать
нетто / закрытый.

Даже когда FreeBSD настроена таким образом, она не
полностью соответствует требованиям стандарта Интернет
для роутеров.Это достаточно близко для обычного использования,
Однако.

Мы уже говорили о том, как мы определяем наши маршруты к
внешний мир, а не о том, как внешний мир
находит нас.

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

Когда вы получаете адресное пространство, назначенное вашему сайту,
ваш поставщик услуг настроит свои таблицы маршрутизации, чтобы
что весь трафик для вашей подсети будет отправляться по вашему PPP
ссылку на ваш сайт. Но откуда сайты по всей стране знают
отправить своему провайдеру?

Есть система (очень похожая на распределенный DNS
информации), которая отслеживает все назначенные
адресных пространств и определяет их точку подключения к
Магистраль Интернета.« Магистраль » — это основной ствол
линии, по которым проходит Интернет-трафик по всей стране, и
по всему миру. На каждой базовой машине есть копия
главный набор таблиц, которые направляют трафик для определенного
сеть к определенному магистральному оператору, а оттуда вниз
цепочку поставщиков услуг, пока она не достигнет вашего
сеть.

Задача вашего поставщика услуг — рекламировать
магистральные сайты, которые являются точкой подключения
(и, следовательно, путь внутрь) для вашего сайта.Это известно как
распространение маршрута.

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

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

Для получения дополнительной информации см. Страницу руководства для
traceroute (8).

.

11.5. Настройка сетевых интерфейсных плат

11.5. Настройка сетевых интерфейсных карт

Предоставлено Marc Fonvieille.

Добавление и настройка сетевой карты
(NIC) — обычная задача для любой FreeBSD
администратор.

11.5.1.Найдение правильного драйвера

Сначала определите модель сетевой карты.
и чип, который он использует. FreeBSD поддерживает широкий спектр
Сетевые карты. Проверьте совместимость оборудования
Составьте список для выпуска FreeBSD, чтобы узнать,
поддерживается.

Если сетевая карта поддерживается, определить
имя драйвера FreeBSD для сетевой карты.
См. / usr / src / sys / conf / NOTES и
/ usr / src / sys / arch / conf / NOTES
для списка драйверов NIC с некоторыми
информация о поддерживаемых чипсетах. Если сомневаетесь, прочтите
справочную страницу драйвера, поскольку она предоставит больше
информация о поддерживаемом оборудовании и любых известных
ограничения драйвера.

Драйверы для общих сетевых адаптеров уже установлены.
присутствует в ядре GENERIC , что означает
при загрузке необходимо проверить сетевой адаптер.В
сообщения загрузки системы можно просмотреть, набрав
подробнее /var/run/dmesg.boot и используя
пробел для прокрутки текста. В этом примере два
Сетевые карты Ethernet с использованием драйвера dc (4)
присутствуют в системе:

 dc0: <82c169 PNIC 10 / 100BaseTX> порт 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 на устройстве 11.0 на pci0
miibus0: <автобус MII> на dc0
bmtphy0:  PHY 1 на miibus0
bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, авто
dc0: адрес Ethernet: 00: a0: cc: da: da: da
dc0: [ITHREAD]
dc1: <82c169 PNIC 10 / 100BaseTX> порт 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 на устройстве 12.0 на pci0
miibus1: <автобус MII> на dc1
bmtphy1:  PHY 1 на miibus1
bmtphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, авто
dc1: адрес Ethernet: 00: a0: cc: da: da: db
dc1: [ITHREAD] 

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

  • Самый простой способ — загрузить модуль ядра для
    NIC с использованием kldload (8).Чтобы также
    автоматически загружать драйвер во время загрузки, добавить
    подходящая линия для
    /boot/loader.conf . Не все
    Драйверы NIC доступны как
    модули.

  • В качестве альтернативы статическая компиляция поддержки для
    NIC в собственное ядро. Ссылаться на
    / usr / src / sys / conf / NOTES ,
    / usr / src / sys / arch / conf / NOTES
    и справочную страницу драйвера, чтобы определить, какая строка
    для добавления в настраиваемый файл конфигурации ядра.Для большего
    информацию о перекомпиляции ядра см. в главе 8, Настройка ядра FreeBSD . Если сетевая карта
    был обнаружен при загрузке, ядро ​​не нужно
    перекомпилирован.

11.5.1.1. Использование драйверов NDIS для Windows

К сожалению, многие поставщики все еще не
предоставить схемы своих драйверов в открытый исходный код
сообщества, потому что они считают такую ​​информацию торговлей
секреты. Следовательно, разработчики FreeBSD и другие
операционным системам остается два варианта: разработать
водители долгим и кропотливым процессом обратного
разработка или использование существующих доступных двоичных файлов драйверов
для платформ MicrosoftWindows.

FreeBSD обеспечивает «родную» поддержку
Спецификация интерфейса сетевого драйвера
(NDIS). Включает ndisgen (8)
который можно использовать для преобразования драйвера WindowsXP в
формат, который можно использовать во FreeBSD. Потому что ndis (4)
драйвер использует двоичный файл WindowsXP, он работает только на i386 ™
и системы amd64. PCI, CardBus,
PCMCIA и USB
устройства поддерживаются.

Для использования ndisgen (8) необходимы три вещи:

  1. Исходники ядра FreeBSD.

  2. Двоичный файл драйвера WindowsXP с
    .SYS расширение.

  3. Файл конфигурации драйвера WindowsXP с
    .INF расширение.

Загрузите .SYS и
.INF файлов для конкретных
NIC. Обычно их можно найти на
компакт-диск с драйверами или на сайте производителя. Последующий
в примерах используется W32DRIVER.SYS и
W32DRIVER.INF .

Разрядность драйвера должна соответствовать версии FreeBSD.
Для FreeBSD / i386 используйте 32-разрядный драйвер Windows.За
FreeBSD / amd64, необходим 64-битный драйвер для Windows.

Следующим шагом является компиляция двоичного файла драйвера в
загружаемый модуль ядра. Как
корень , используйте
ndisgen (8):

  #    ndisgen   /path/to/W32DRIVER.INF     /path/to/W32DRIVER.SYS     

Эта интерактивная команда запрашивает любые дополнительные
информация, которую он требует. Новый модуль ядра будет
генерируется в текущем каталоге.Используйте kldload (8)
для загрузки нового модуля:

  #    kldload   ./W32DRIVER_SYS.ko     

В дополнение к сгенерированному модулю ядра
ndis.ko и
if_ndis.ko модули должны быть загружены.
Это должно произойти автоматически, когда любой модуль,
зависит от ndis (4) загружается. Если нет, загрузите их
вручную, используя следующие команды:

  #    kldload ndis  
  #    kldload if_ndis   

Первая команда загружает драйвер минипорта ndis (4)
оболочка, а вторая загружает сгенерированный
Драйвер сетевой карты.

Проверьте dmesg (8), есть ли загрузка
ошибки. Если все прошло хорошо, результат должен быть похож на
следующее:

 ndis0:  mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
ndis0: Версия API NDIS: 5.0
ndis0: Адрес Ethernet: 0a: b1: 2c: d3: 4e: f5
ndis0: скорость 11b: 1 Мбит / с 2 Мбит / с 5,5 Мбит / с 11 Мбит / с
ndis0: 11g скорости: 6 Мбит / с 9 Мбит / с 12 Мбит / с 18 Мбит / с 36 Мбит / с 48 Мбит / с 54 Мбит / с 

Отсюда ndis0 может быть
настраивается как и любой другой сетевой адаптер.

Для настройки системы для загрузки модулей ndis (4)
во время загрузки скопируйте сгенерированный модуль,
W32DRIVER_SYS.ko , к
/ загрузка / модули . Затем добавьте следующее
строку /boot/loader.conf :

 W32DRIVER_SYS_load = "YES" 

11.5.2.Настройка сетевой карты

После загрузки правильного драйвера для
NIC, карту нужно настроить. Это
могли быть настроены во время установки
bsdinstall (8).

Чтобы отобразить конфигурацию сетевой карты,
введите следующую команду:

 %    ifconfig  
dc0: flags = 8843  метрика 0 MTU 1500
        options = 80008 
        эфир 00: a0: cc: da: da: da
        инет 192.168.1.3 маска сети 0xffffff00 широковещательная передача 192.168.1.255
        media: автоматический выбор Ethernet (100baseTX )
        статус: активный
dc1: flags = 8802  метрика 0 MTU 1500
        options = 80008 
        эфир 00: a0: cc: da: da: db
        inet 10.0.0.1 маска сети 0xffffff00 широковещательная передача 10.0.0.255
        СМИ: Ethernet 10baseT / UTP
        статус: нет перевозчика
lo0: flags = 8049  метрика 0 MTU 16384
        options = 3 
        inet6 fe80 :: 1% lo0 prefixlen 64 scopeid 0x4
        inet6 :: 1 префиксlen 128
        инет 127.0.0.1 маска сети 0xff000000
        nd6 options = 3  

В этом примере следующие устройства были
отображается:

  • dc0 : Первый Ethernet
    интерфейс.

  • dc1 : второй Ethernet
    интерфейс.

  • lo0 : Петлевой
    устройство.

FreeBSD использует имя драйвера, за которым следует порядок, в котором
карта обнаруживается при загрузке, чтобы назвать
NIC.Например,
sis2 третий
Сетевая карта в системе с использованием sis (4)
Водитель.

В этом примере dc0 работает и
Бег. Ключевые показатели:

  1. UP означает, что карта
    настроен и готов.

  2. На карте есть интернет ( inet )
    адрес, 192.168.1.3 .

  3. Имеет допустимую маску подсети
    ( netmask ), где
    0xffffff00 — это
    То же, что и 255.255.255.0 .

  4. Имеет действующий широковещательный адрес: 192.168.1.255 .

  5. MAC-адрес карты
    ( ether ) — это 00: a0: cc: da: da: da .

  6. Выбор физического носителя находится в режиме автоматического выбора
    (Носитель : автоматический выбор Ethernet (100baseTX
    <полный дуплекс>)
    ). В этом примере
    dc1 настроен для работы с
    10baseT / UTP носитель. Для большего
    информацию о доступных типах носителей для драйвера см.
    на свою страницу руководства.

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

Если вывод ifconfig (8) показал нечто подобное
to:

 dc0: flags = 8843  метрика 0 mtu 1500
options = 80008 
эфир 00: a0: cc: da: da: da
media: автоматический выбор Ethernet (100baseTX )
status: active 

это означает, что карта не была настроена.

Карта должна быть настроена как
корень . В
Конфигурация NIC может быть выполнена из
командная строка с ifconfig (8), но не сохранится после
перезагрузка, если конфигурация также не добавлена ​​в
/etc/rc.conf . Если
DHCP-сервер присутствует в локальной сети,
просто добавьте эту строку:

 ifconfig_dc0 = "DHCP" 

Замените dc0 правильным
ценность для системы.

После добавления строки следуйте инструкциям, приведенным в
Раздел 11.5.3, «Тестирование и устранение неисправностей».

Примечание:

Если сеть была настроена во время установки, некоторые
записи для сетевых адаптеров могут быть уже
настоящее время. Дважды проверьте /etc/rc.conf
перед добавлением каких-либо строк.

Если DHCP-сервер отсутствует,
сетевые адаптеры необходимо настроить вручную.
Добавьте строку для каждой сетевой карты, присутствующей на
система, как показано в этом примере:

 ifconfig_dc0 = "inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_dc1 = "inet 10.0.0.1 сетевая маска 255.255.255.0 media 10baseT / UTP "

Заменить dc0 и
dc1 и IP
адресная информация с правильными значениями для системы.
Обратитесь к странице руководства для драйвера, ifconfig (8) и
rc.conf (5) для получения более подробной информации о допустимых параметрах и
синтаксис /etc/rc.conf .

Если сеть не использует DNS, отредактируйте
/ etc / hosts , чтобы добавить имена и
IP-адреса хостов на
LAN, если их еще нет. За
дополнительную информацию см. в хостах (5) и в
/ usr / share / examples / etc / hosts .

Примечание:

Если DHCP-сервер отсутствует и
необходим доступ в Интернет, вручную настройте
шлюз по умолчанию и сервер имен:

  #    echo 'defaultrouter = "  your_default_router  "' >> /etc/rc.conf  
  #    echo 'nameserver   your_DNS_server  ' >> /etc/resolv.conf   

11.5.3. Тестирование и устранение неисправностей

После внесения необходимых изменений в
/ etc / rc.conf сохранены, перезагрузка может быть
используется для проверки конфигурации сети и проверки того, что
система перезагружается без ошибок конфигурации.
Как вариант, примените настройки к сетевой системе.
с помощью этой команды:

  #    service netif restart   

Примечание:

Если шлюз по умолчанию был установлен в
/etc/rc.conf , также выдайте это
команда:

  #    перезапуск маршрутизации служб   

После перезапуска сетевой системы проверьте
Сетевые карты.

11.5.3.1. Тестирование карты Ethernet

Чтобы убедиться, что карта Ethernet настроена правильно,
ping (8) сам интерфейс, а затем ping (8)
другой компьютер в локальной сети:

 %    ping -c5 192.168.1.3  
PING 192.168.1.3 (192.168.1.3): 56 байтов данных
64 байта из 192.168.1.3: icmp_seq = 0 ttl = 64 time = 0,082 мс
64 байта из 192.168.1.3: icmp_seq = 1 ttl = 64 time = 0,074 мс
64 байта из 192.168.1.3: icmp_seq = 2 ttl = 64 time = 0,076 мс
64 байта из 192.168.1.3: icmp_seq = 3 ttl = 64 время = 0,108 мс
64 байта из 192.168.1.3: icmp_seq = 4 ttl = 64 time = 0,076 мс

--- 192.168.1.3 статистика пинга ---
5 пакетов передано, 5 пакетов получено, потеря пакетов 0%
туда и обратно min / avg / max / stddev = 0,074 / 0,083 / 0,108 / 0,013 мс 
 %    ping -c5 192.168.1.2  
PING 192.168.1.2 (192.168.1.2): 56 байтов данных
64 байта из 192.168.1.2: icmp_seq = 0 ttl = 64 время = 0,726 мс
64 байта из 192.168.1.2: icmp_seq = 1 ttl = 64 time = 0,766 мс
64 байта из 192.168.1.2: icmp_seq = 2 ttl = 64 время = 0,700 мс
64 байта из 192.168.1.2: icmp_seq = 3 ttl = 64 time = 0,747 мс
64 байта из 192.168.1.2: icmp_seq = 4 ttl = 64 time = 0.704 мс

--- 192.168.1.2 статистика пинга ---
5 пакетов передано, 5 пакетов получено, потеря пакетов 0%
туда и обратно min / avg / max / stddev = 0,700 / 0,729 / 0,766 / 0,025 мс 

Для проверки разрешения сети используйте вместо этого имя хоста
IP-адреса. Если нет
DNS-сервер в сети,
/ etc / hosts сначала должен быть
настроен.Для этого отредактируйте
/ etc / hosts , чтобы добавить имена и
IP-адреса хостов на
LAN, если их еще нет. За
дополнительную информацию см. в хостах (5) и в
/ usr / share / examples / etc / hosts .

При устранении неполадок оборудования и программного обеспечения
конфигурации, сначала проверьте простые вещи. Это
сетевой кабель подключен? Правильно ли работают сетевые службы
настроил? Правильно ли настроен брандмауэр? Это
NIC поддерживается FreeBSD? Перед отправкой
отчет об ошибке, всегда проверяйте примечания к оборудованию, обновляйте
версию FreeBSD до последней СТАБИЛЬНОЙ версии, проверьте
архивы списков рассылки и поиск в Интернете.

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

Некоторые пользователи сталкиваются с одним или двумя
сообщения о тайм-ауте устройства,
нормально для некоторых карт. Если они продолжаются или надоедают,
определить, не конфликтует ли устройство с другим устройством.
Дважды проверьте кабельные соединения. Подумайте о том, чтобы попробовать другой
карта.

Для устранения тайм-аута сторожевого таймера
ошибки, сначала проверьте сетевой кабель.Многие карты
требуется слот PCI, который поддерживает шину
освоение. На некоторых старых материнских платах только одна
Слот PCI позволяет это, обычно слот 0.
Проверьте сетевую карту и материнскую плату
документация, чтобы определить, может ли это быть
проблема.

Нет сообщения о маршруте к хосту
если система не может направить пакет к месту назначения
хост. Это может произойти, если не указан маршрут по умолчанию или
если кабель отключен. Проверьте вывод
netstat -rn и убедитесь, что
действительный маршрут к хосту.Если нет, прочтите
Раздел 31.2, «Шлюзы и маршруты».

ping: sendto: в доступе отказано
сообщения об ошибках часто возникают из-за неправильно настроенного брандмауэра.
Если брандмауэр включен во FreeBSD, но правила не были
определено, политика по умолчанию — запретить весь трафик, даже
пинг (8). Ссылаться на
Chapter30, Межсетевые экраны для получения дополнительной информации.

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

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *