Помогите настроить маршрутизацию (Маршрут)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

MiK13
Сообщения: 1254
ОС: Linux Debian

Помогите настроить маршрутизацию

Сообщение MiK13 »

Понимаю, что задача очень простая. Скорее всего элементарная. Но я подобным ещё не занимался, поэтому не хватает каких-то базовых знаний.
Есть три узла. Анализатор сигнала, as, и два АРМа, a1 и a2 (такие имена прописал в /etc/hosts).
as выдаёт широковещательные UDP пакеты с оцифровкой сигнала и его предварительным анализом, и им можно управлять по TCP.
На АРМах по несколько интерфейсов eth. Система RHEL.
От as подключён к a1.eth1. А к a1.eth2 подключён a2. К АРМам могут подключаться ещё компьютеры, но речь не о них.
Чтобы a2 мог принимать информацию от as, я просто в программе приёма их отправляю к другому узлу. А вот с TCP возникла проблема. a2 его прямо не видит.
На a1 прописал route add as eth1 и route add a2 eth2.
На a2 -- route add a1 eth1 и route add as gw a1 eth1.
Но на a2 ping as не проходит,
Думал настроить через iptables и FORWARD -- не получилось. На a2 ping as не идёт.
На a1 вызвал firewall-connection. В ней на закладке Masquerade в пункте trusted поставил галочку против Masquerading_zone. Пинг появился. Перегрузил a1 -- пинга нет. Вызвал firewall-connection -- галочка стоит. Снял её -- пинг появился.

Подозреваю, что проблема решается очень просто. Но как?
Спасибо сказали:
MiK13
Сообщения: 1254
ОС: Linux Debian

Re: Помогите настроить маршрутизацию

Сообщение MiK13 »

Решение действительно оказалось очень простым.
Аналогом команды sed -i "s/^net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/" /etc/sysctl.conf
Правда, на "сервере", на котором когда-то настраивали маршрутизацию подобное делалось командой echo 0 >/proc/sys/net/ipv4/ip_forward;
Но в данном случае это не помогало.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21245
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Помогите настроить маршрутизацию

Сообщение Bizdelnick »

MiK13 писал:
26.02.2020 18:11
Решение действительно оказалось очень простым.
Аналогом команды sed -i "s/^net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/" /etc/sysctl.conf
Правда, на "сервере", на котором когда-то настраивали маршрутизацию подобное делалось командой echo 0 >/proc/sys/net/ipv4/ip_forward;
Но в данном случае это не помогало.
Первое меняет конфигурационный файл, но не текущую конфигурацию, поэтому изменения подхватятся только после перезагрузки или выполнения sysctl -p. Второе — текущую конфигурацию, но не файл, поэтому изменения будут действовать только до перезагрузки.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1254
ОС: Linux Debian

Re: Помогите настроить маршрутизацию

Сообщение MiK13 »

Bizdelnick писал:
26.02.2020 18:34
Первое меняет конфигурационный файл, но не текущую конфигурацию, поэтому изменения подхватятся только после перезагрузки или выполнения sysctl -p.
Это мне понятно. Нужно было решить проблему в принципе.
Bizdelnick писал:
26.02.2020 18:34
Второе — текущую конфигурацию, но не файл, поэтому изменения будут действовать только до перезагрузки.
Это тоже понятно. На сервере эта команда стоит в скрипте, который выполняется при загрузке системы.
Но мне не понятно почему это не срабатывало в моём случае.
Может быть что-то ещё мешало...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21245
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Помогите настроить маршрутизацию

Сообщение Bizdelnick »

MiK13 писал:
26.02.2020 19:44
На сервере эта команда стоит в скрипте, который выполняется при загрузке системы.
Но мне не понятно почему это не срабатывало в моём случае.
Либо скрипт не запускался, либо он запускался раньше, чем подгружались настройки из sysctl.conf. А вообще не стоит городить костыли со скриптами, если вопрос решается строчкой в конфиге.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1254
ОС: Linux Debian

Re: Помогите настроить маршрутизацию

Сообщение MiK13 »

Bizdelnick писал:
26.02.2020 19:48
не стоит городить костыли со скриптами, если вопрос решается строчкой в конфиге.
Сейчас посмотрел, что на "сервере",
Там в /etc/sysctl.conf увидел две строки:

Код: Выделить всё

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
То есть тот, кто его писал (больше 10 лет назад) этого, видимо, не знал. Но знал функции файлов в каталоге /proc.
А основная задача того скрипта была настроить маршрутизацию между локальной сетью отдела и интернетом через модем.
Причём, в скрипте явно указывались IP адреса компьютеров, которым предоставлялся доступ в интернет.
Кстати, в том скрипте файлы в /proc использовали 6 строк:

Код: Выделить всё

/bin/echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding
/bin/echo 1 > /proc/sys/net/ipv4/conf/eth1/forwarding
/bin/echo 0 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
/bin/echo 0 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
/bin/echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
/bin/echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Помогите настроить маршрутизацию

Сообщение s.xbatob »

MiK13 писал:
28.02.2020 15:19
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
То есть тот, кто его писал (больше 10 лет назад) этого, видимо, не знал. Но знал функции файлов в каталоге /proc.
Тут разные функции. Одноразово, на пробу — это одно. Постоянно — другое.
Только писать в стартовых скриптах что-либо в /proc/sys/… — это как-то не то. В конце концов есть же sysctl net.ipv4.…1, который делает ровно то же самое.
Спасибо сказали:
MiK13
Сообщения: 1254
ОС: Linux Debian

Re: Помогите настроить маршрутизацию

Сообщение MiK13 »

Оказалось, что проблема всё-таки не такая простая, как показалось. И дело всё-таки в firewall. Точнее в настройках iptables.
После того, как я на a1 заменил в /etc/sysctl.conf ip_forward = 0 на ip_forward = 1 связь между a2 и as, подключённому к a1, появилась. Но возникла ещё одна задача.
К АРМам a1 и a2 подключены телефоны t1 и t2 со своими IP адресами. И нужно обеспечить между ними связь. То есть чтобы АРМы перенаправляли их пакеты. Я прописал маршруты:
На a1:

Shell

route add t1 eth1
route add t2 gw a2 eth2
На a2:

Shell

route add t2 eth2
route add t1 gw a1 eth1
И тут возникла странность.
С АРМа a2 пингуется как t2 с ttl=64, так и t1 с ttl=63
А вот с a1 t1 пингуется, а t2 нет. Хотя на a2 я также заменил в /etc/sysctl.conf ip_forward = 0 на ip_forward = 1.
tcpdump на интерфейсе к t2 показал, что IPCM запросы к нему от a1 приходят, а в ответ идут ARP запросы с просьбой сообщить кто имеет адрес a1. Почему a2 не сообщал ему об этом, не знаю. Видимо потому, что я удалил все сетевые маршруты кроме default.
Но потом решил посмотреть IP пакеты на интерфейсе, к которому подключен t1 и увидел, что ICMP пакеты к нему идут от a1 а не от a2. И вспомнил, что я до ip_forward = 1 возился с маскарадингом, Снял на a1 firewall (простым kill (предварительно выдав iptables-save >ts1) -- пинги t1 с a2 пропали.
Сделал на a2 iptables-restore <ts1 -- пинги t2 с a1 появились.
Видимо нужно просто добавить в /etc/rc.local строки iptables, которые будут преобразовывать адреса.
Но вот какие?...
Спасибо сказали: