Традиционно FreeBSD IP-трафик, предназначенный для одного из собственных интерфейсов, обрабатывает через loopback-интерфейс (lo0). То есть, если у нас есть два сетевых интерфейса с адресами $ip1 и $ip2 и мы запускаем
Иногда всё же нужно сделать так, чтобы пакеты физически покидали машину и возвращались обратно - например, для тестирования какого-нибудь оборудования для организации канала связи. Удобно такое тестирование делать одной машиной с двумя интерфейсами. Вот как это можно сделать на примере FreeBSD 9.1-PRERELEASE с двумя сетевыми igb0 и igb1:
- в
/boot/loader.confдобавляем:net.fibs=4 - в ядро добавляем:
options VIMAGE - не делая никаких buildworld/installword, создаём два "пустых" jail, без единого исполняющегося процесса в каждом, зато с собственным сетевым стеком, набором сетевых интерфейсов и таблицей маршрутизации на каждый jail:
jail -c name=test0 vnet persist exec.fib=1 jail -c name=test1 vnet persist exec.fib=2
- перемещаем интерфейс igb0 в jail test0, а igb1 в jail test1, после чего они "исчезают" из хост-системы:
ifconfig igb0 vnet test0 ifconfig igb1 vnet test1 jexec test0 ifconfig igb0 inet 10.0.0.1/24 jexec test1 ifconfig igb1 inet 10.0.0.2/24
- После этого можно, например, запустить
jexec test0 ping 10.0.0.2и пинг с адреса 10.0.0.1 на 10.0.0.2 уходит через интерфейс igb0 в физическую сеть, которая в моём случае замкнута обратно на igb1. tcpdump подтверждает, что пакеты уходят и приходят через igb0/igb1.
Так можно тестировать коммутаторы/медиаконвертеры/модули SFP/что угодно.
no subject
Date: 2012-08-08 16:31 (UTC)