Как настроить маршрутизацию между двумя сетями linux
Перейти к содержимому

Как настроить маршрутизацию между двумя сетями linux

  • автор:

Маршрутизация между двумя LAN

Имеется локальная сеть от роутера 172.16.32.1, с него выход в интернет. Внутри этой сети расположен сервер SQUID на Ubuntu Server 22.04, на внешнем интерфейсе 172.16.32.103, на внутреннем 172.16.33.1 . Сервер включен между локалками.

На сервере активирован net.ipv4.ip_forward=1, прописан MASQUERADE в iptables. Со стороны клиентов 172.16.33.0/24 все прекрасно видно в 172.16.32.0/24, естественно, интернет есть. Но наоборот, из сети 172.16.32.0/24 в 172.16.33.0/24 доступа нет.

Настройка таблиц особого результата не дала, что «маскарадится» в одну сторону в другую ни в какую не хочет. С сервера обе сети пингуются. Изучал мануал по Iptables, но так как опыта мало, полез смотреть «что у людей», а там как-то маловато конкретики, в основном все порты бросают через сервер наружу в инет. В итоге таблицы изрядно помножились на мои домыслы:

iptables -A FORWARD -i enp3s0 -o enp4s7 -j ACCEPT iptables -A FORWARD -i enp3s0 -o enp4s7 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i enp4s7 -o enp3s0 -j ACCEPT iptables -A FORWARD -i enp4s7 -o enp3s0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE iptables -t nat -A POSTROUTING -o enp4s7 -j MASQUERADE 

Наверное, NAT то здесь и не нужен. А, по всей видимости, нужна маршрутизация между внешним и внутренним интерфейсом сервера. И как-то же нужно чтобы клиенты из 172.16.32.0/24 знали, что надо отправлять пакеты на 172.16.32.103, а то они упорно ищут 172.16.33.0/24 в интернете через роутер 172.16.32.1 . Ознакомившись с основами настройки Netplan (детское издание, с примерами) нашел, как мне показалось, логичный способ маршрутизации:

network: ethernets: enp3s0: dhcp4: no addresses: - 172.16.32.103/24 nameservers: addresses: - 172.27.100.5 optional: true routes: - to: default via: 172.16.32.1 - to: 0.0.0.0/0 via: 172.16.32.1 table: 801 on-link: true routing-policy: - from: 172.16.32.103 table: 801 priority: 200 enp4s7: dhcp4: no addresses: - 172.16.33.1/24 nameservers: addresses: - 172.16.33.1 optional: true routes: - to: 0.0.0.0/0 via: 172.16.33.1 table: 800 on-link: true routing-policy: - from: 172.16.32.103 table: 800 priority: 300 version: 2 renderer: networkd 

Который тоже не работает.

Изрядно потупив несколько дней напролет ни к чему не пришел. И сейчас уже каша в голове. Может я что-то не так ищу, может не надо в поисковых запросах писать «про соединение и маршрутизацию двух локальных сетей»? Что задать в поиске, помимо документации?

Форум русскоязычного сообщества Ubuntu

Страница сгенерирована за 0.054 секунд. Запросов: 25.

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Как настроить роутинг между двумя локальными сетями?

Добрый день!
Имеется сервер с 3-мя сетевыми картами.
Первая смотрит в интернет 192.168.0.0/24 (p4p1), остальные две обслуживают разные подсети: 192.168.1.0/24 (br0) и 192.168.10.0/24 (p32p1)
На сервере поднят NAT. Доступ в интернет необходим и работает из подсети 192.168.1.0/24
Теперь понадобилось иметь доступ и подсети 192.168.1.0/24 в 192.168.10.0/24.
1) Форвардинг разумеется включен
2) Траффик между интерфейсами разрешен:
iptables -A FORWARD -i br0 -o p32p1 -j ACCEPT

Однако работать оно что-то не хочет.

Таблица маршутизации ядра протокола IP Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 0 0 0 p4p1 192.168.0.0 * 255.255.255.0 U 0 0 0 p4p1 192.168.1.0 * 255.255.255.0 U 0 0 0 br0 192.168.10.0 * 255.255.255.0 U 0 0 0 p32p1
*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT -A INPUT -p icmp -m state --state NEW -m icmp --icmp-type echo-reply -j ACCEPT -A INPUT -p icmp -m state --state NEW -m icmp --icmp-type destination-unreachable -j ACCEPT -A INPUT -p icmp -m state --state NEW -m icmp --icmp-type source-quench -j ACCEPT -A INPUT -p icmp -m state --state NEW -m icmp --icmp-type echo-request -j ACCEPT -A INPUT -p icmp -m state --state NEW -m icmp --icmp-type time-exceeded -j ACCEPT -A INPUT -p icmp -m state --state NEW -m icmp --icmp-type parameter-problem -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -m state --state INVALID -j DROP -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT -A FORWARD -i br0 -o p4p1 -j ACCEPT -A FORWARD -i br0 -o p32p1 -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # SSH -A INPUT -p udp -m udp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # OpenVPN -A INPUT -p udp -m udp --dport 1194 -j ACCEPT # NTP -A INPUT -i br0 -p udp -m udp --dport 123 -j ACCEPT -A INPUT -i p32p1 -p udp -m udp --dport 123 -j ACCEPT # DNS -A INPUT -i br0 -p udp -m udp --dport 53 -j ACCEPT -A INPUT -i br0 -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -i p32p1 -p udp -m udp --dport 53 -j ACCEPT -A INPUT -i p32p1 -p tcp -m tcp --dport 53 -j ACCEPT # MDNS -A INPUT -i br0 -p udp -m udp --dport 5353 -j ACCEPT -A INPUT -i p32p1 -p udp -m udp --dport 5353 -j ACCEPT # SAMBA -A INPUT -i br0 -p tcp -m tcp --dport 135 -j ACCEPT -A INPUT -i br0 -p udp -m udp --dport 137 -j ACCEPT -A INPUT -i br0 -p udp -m udp --dport 138 -j ACCEPT -A INPUT -i br0 -p tcp -m tcp --dport 139 -j ACCEPT -A INPUT -i br0 -p tcp -m tcp --dport 445 -j ACCEPT # WWW -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT COMMIT *nat # NAT -A POSTROUTING -o p4p1 -j MASQUERADE COMMIT

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

  • Вопрос задан более трёх лет назад
  • 4268 просмотров

8 комментариев

Оценить 8 комментариев

Настройка сетевых маршрутов в Linux (CentOS)

date

13.04.2020

user

VyacheslavK

directory

CentOS, Linux

comments

Один комментарий

В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).

Для управления маршрутизацией в Linux предпочтительно исопльзовать утилиту ip , а не route . Команда route не позволяет настраивать расширенные возможности маршрутизации (например, политики маршрутизации), и не покажет специальные настройки маршрутизации, если они уже сделаны через ip.

Просмотр таблицы маршрутизации в Linux

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

вывести таблицу маршрутизации в linux centos ip router

  • default via 192.168.1.1 dev enp0s3 – шлюз по умолчанию, в данном примере работающий через интерфейс enp0s3. Если для target адреса в таблице маршрутизации отсутствует маршрут, то такой пакет отправляется через данный шлюз (маршрут по умолчанию)
  • 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 — статический маршрут для сети 192.168.1.0/24 через адрес 192.168.1.201, который прописан на интерфейсе
  • proto kernel – маршрут создан ядром ( proto static – маршрут добавлен администратором)
  • metric – приоритет маршрута (чем меньше значение metric, тем выше приоритет). При наличии двух маршрутов с одинаковой метрикой (не стоит так делать!), ядро начинает выбирать маршруты случайным образом.

Чтобы узнать через какой интерфейс (шлюз) должен маршрутизироваться трафик к определенному IP адресу используется команда:

# ip route get 192.168.2.45

192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201

Вы можете использовать ваш Linux сервер с двумя и более интерфейсами как маршрутизатор или интернет-шлюз. Чтобы разрешить маршрутизацию пакетов между несколькими интерфейсами, нужно включить параметр ядра net.ipv4.ip_forward = 1.

Как добавить или удалить статический маршрут?

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

# ip route add 192.168.0.0/24 via 192.168.1.1

Таким образом, мы добавим маршрут для IP сети 192.168.0.0/24 через шлюз 192.168.1.1.

Формат команды ip route очень похоже на синтаксис в Cisco IOS. Здесь также можно исопльзовать сокращений, например вместо ip route add можно написать ip pro ad .

добавление маршрута в centos

Также можно добавить отдельный маршрут для одного IP адреса (хоста):

# ip route add 192.168.1.0 via 192.168.1.1

Можно сделать аналог null route маршрута в Cisco (ip route null0), пакеты в такую сеть удаляются по причине No route to host:

# ip route add blackhole 10.1.20.0/24

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

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

# ip route del 192.168.0.0/24

удалить маршрут из таблицы маршрутизации в linux centos

Как видите, маршрут удален из таблицы маршрутизации.

Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).

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

В моем случае, интерфейс enp0s3.

Более подробная статья о настройке сетевых интерфейсов в CentOS.

сетевые интерфейсы в centos

Далее открываем следующий файл:

И добавляем туда строку с маршрутом:

192.168.0.0/24 via 192.168.1.1

После добавления маршрута в файл нужно перезапустить сервис network:

# service network restart

добавить постоянный (persistent) маршрут в centos linux

После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.

Также можно добавить команду добавления нового маршрута в файл rc.local, чтобы он автоматически добавлялся при загрузке сервера. Откройте файл:

И укажите команду добавления маршрута:

# ip route add 192.168.0.0/24 via 192.168.1.1

добавление persistent маршрута через rc.local

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

Изменить маршрут в Linux

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

# ip route replace 192.168.0.0/24 via 192.168.1.1

изменитть маршрут ip route replace

Чтобы сбросить все временные маршруты в таблице маршрутизации, просто перезапустите сетевой сервис:

[root@localhost ~]# service network restart

Restarting network (via systemctl): [ OK ]

[root@localhost ~]# ip route

default via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100

Изменить маршрут по умолчанию

Вы можете удалить маршрут по-умолчаню с помощью команды ip route del:

# ip route del default via 192.168.1.1 dev enp0s3

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

# ip route add default via 192.168.1.2 (маршрут через IP адрес шлюза)

# ip route add default via enp0s3 (маршрут через имя устройства)

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

# ip route replace default via 192.168.1.2

ip route replace default

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

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

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