LINUX.ORG.RU

Сообщения rum

 

Настройка Quagga. Блуждания в леcу из трёх маршрутизаторов.

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

|R2|-(1.1.1.5/30)<----->(1.1.1.6/30)-|R3|-(1.1.1.9/30)<----->(1.1.1.10/30)-|R4|

где на схеме:
|Rх| - хосты/пограничные маршрутизаторы с квагой
(1.1.1.5/30) - их сетевые интерфейсы
<-----> связи между интерфейсами.

На маршруттизаторах использую сл. AS и блоки адресов:

R2: AS65538 100.0.2.0/24
R3: AS65539 100.0.3.0/24
R4: AS65540 100.0.4.0/24
З.Ы наверное картинку тут нельзя загрузить по какой то причине... Соответственно конфиги:
R2
hostname r2
password 123
enable password 123
log file /var/log/quagga/bgpd.log
log stdout
router bgp 65538
 bgp router-id 100.0.2.1
 network 100.0.2.0/24
 neighbor 1.1.1.6 remote-as 65539
 neighbor 1.1.1.6 description R3
 neighbor 1.1.1.6 next-hop-self
 address-family ipv6
 exit-address-family
 exit
line vty
 exec-timeout 0 0

R4
hostname r3
password 123
enable password 123
log file /var/log/quagga/bgpd.log
log stdout
router bgp 65539
 bgp router-id 100.0.3.1
 network 100.0.3.0/24
 neighbor 1.1.1.5 remote-as 65538
 neighbor 1.1.1.5 description R2
 neighbor 1.1.1.5 next-hop-self
 neighbor 1.1.1.10 remote-as 65540
 neighbor 1.1.1.10 description R4
 neighbor 1.1.1.10 next-hop-self
 address-family ipv6
 exit-address-family
 exit
line vty
 exec-timeout 0 0

R4
hostname r4
password 123
enable password 123
log file /var/log/quagga/bgpd.log
log stdout
router bgp 65540
 bgp router-id 100.0.4.1
 network 100.0.4.0/24
 neighbor 1.1.1.9 remote-as 65539
 neighbor 1.1.1.9 description R3
 neighbor 1.1.1.9 next-hop-self
 address-family ipv6
 exit-address-family
 exit
line vty
 exec-timeout 0 0
Интерфейсы на всех хостах 100.0.2.1 100.0.3.1 100.0.4.1 реальные и подняты. Ип связность между хостами тоже есть. Запускаю демоны bgpd на машинах, получаю следующий вид таблиц маршрутизации на хостах (например на R4, на остальных аналогично):
r4# show ip bgp 
BGP table version is 0, local router ID is 100.0.4.1
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
              i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric LocPrf Weight Path
*> 100.0.2.0/24     1.1.1.9                                0 65539 65538 i
*> 100.0.3.0/24     1.1.1.9                  0             0 65539 i
*> 100.0.4.0/24     0.0.0.0                  0         32768 i

#и на самом хосте:

root@r4:/etc/quagga# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
1.1.1.8         0.0.0.0         255.255.255.252 U     0      0        0 ens18
100.0.2.0       1.1.1.9         255.255.255.0   UG    20     0        0 ens18
100.0.3.0       1.1.1.9         255.255.255.0   UG    20     0        0 ens18
100.0.4.0       0.0.0.0         255.255.255.0   U     0      0        0 ens19
Ну, думаю я, дело в шляпе.. Сейчас с фильтрами поиграюсь и можно будет пробывать соединение ромбиком, а там и в бой.. Проверяю связность R4 с R2 через R3, ожидая ответа от R2...
root@r4:/etc/quagga# ping 100.0.2.1
PING 100.0.2.1 (100.0.2.1) 56(84) bytes of data.
И тут я понимаю, что попал в тот самы лес из трёх маршрутизаторов - где успешно заблудился...). Смотрю tcpdump'ом, что творится на R2:
21:37:30.615950 IP 1.1.1.10 > 100.0.2.1: ICMP echo request
да.. пакеты приходят.. И ожидаемо, что они отправлятся с интерфейса 1.1.1.10 хоста R4, а хост R2 ничего про хост R4 не знает и в ответ отправить ничего не может.. По идее хост R2 знает про хост R4 как 100.0.4.0.. и если его пинговать с него, то пакеты проходят точно также в одностороннем порядке.. Получается надо отправлять пакеты непосредственно с интерфейсов 100.0.4.1 и 100.0.2.1. Пробую на R2:
ping 100.0.4.1 -I ens20
#Смотрю на том же R2...
22:00:23.020526 IP 100.0.2.1 > 100.0.2.1: ICMP host 100.0.4.1 unreachable
Да, похоже хост напрямую с 100.0.2.1 пытается достучатся до 100.0.4.1.. и логично что он его не видит. Пакеты похоже в ядре межу интерфейсами не маршрутизируются, хотя маршрутизация конечно же везде включена.. Спасибо всем, кто дочитал до этого места, вот тут хотел спросить. Возможно в таком случае следует указать какие нибудь опции в bgpd.conf? Или в данной ситуации это делается через iptables? Или я не понимаю самого принйипа этой технологии... Гуру, подскажите пожалуйста!

 ,

rum
()

Опрос устройства по Modbus rtu на Python

Здраствуйте, хочу измерять температуру в помещении. Для этого взял ардуинку, прикрутил датчики и записал туда программу на базе библиотеки ModbusRtu.h, которая через виртуальный /dev/ttyUSB0 отдаёт значения. Всё замечательно работает через утилитку опроса модбаса mbpoll. Решил написать скриптик опроса на питоне, чтобы значения выдавались в консоль в удобной для меня форме, и толкнулся с проблемой - никак не хочет рабоать.. Пробывал библиотки modbus_tk и PyModbus - скрипты валятся с ошибкой чтото вроде «немогу получть корректный ответ итд..» Хотя ранее писал что то подобное для опроса устройства через «железный» /dev/ttyS0 - и оно работало.. Решил посмотреть что там происходит, для этого взял снифер ком порта interceptty, который грубо говоря, подключается к исследуемому порту /dev/ttyUSB0, создаёт виртуальный порт /tmp/ttyUSB0 - к которому обращаюсь через скрипт на питоне (в этот момент interceptty выводит в консоль весь обмен данными). Ио чудо! Всё заработало. Такое ощущение, что interceptty возможно буферизирует или мне нужно как то дополнительно настроить порт для работы напрямую.. Нет ли у кого мыслей на эту тему?

 ,

rum
()

Перенос /boot

Здравствуйте, помогите пожалуйста. Имеется сервер на centos 6. Разбивка диска по умолчанию, с использованием LVM:

/dev/sda1 on /boot type ext4 (rw) /dev/mapper/vg_serv-lv_root on / type ext4 (rw) /dev/mapper/vg_serv-lv_home on /home type ext4 (rw) /dev/mapper/vg_serv-lv_var on /var type ext4 (rw)\

Со временем HDD начал сыпаться, я добавил новый (большего размера) и перетащил туда разделы с LVM, это /, /home, /var. На сбойном диске остался активный раздел с /boot (корень на LVM), где установлен grub 1. Подскажите пожалуйста, как можно перетащить раздел /boot с загрузчиком но новый диск. Пол разному пробовал и Gparted и Acronis итд - ни в какую, необходимо установить нормально grub, который нормально ни встаёт... Уже появляются мысли о копировании с диска на диск по блочно и вручную редактировать MBR.. Может кто сталкивался.?

rum
()

RSS подписка на новые темы