Linux пересылка пакетов между интерфейсами

Содержание
  1. unixforum.org
  2. Пересылка пакетов между интерфейсами (ip_forward)
  3. Пересылка пакетов между интерфейсами
  4. Маршрутизация в Linux
  5. [править] Команды
  6. [править] Использование route
  7. [править] Использование ip
  8. [править] Действия с маршрутами
  9. [править] Equal Cost Multi Path
  10. [править] IPv6
  11. [править] Просмотр маршрутов до определенной сети
  12. [править] Пересылка пакетов между интерфейсами
  13. [править] Конфигурационные файлы
  14. [править] Policy routing
  15. [править] Демоны динамической маршрутизации
  16. [править] Дополнительная информация
  17. [править] Примечания
  18. Маршрутизация в Linux
  19. [править] Команды
  20. [править] Использование route
  21. [править] Использование ip
  22. [править] Действия с маршрутами
  23. [править] Equal Cost Multi Path
  24. [править] IPv6
  25. [править] Просмотр маршрутов до определенной сети
  26. [править] Пересылка пакетов между интерфейсами
  27. [править] Конфигурационные файлы
  28. [править] Policy routing
  29. [править] Демоны динамической маршрутизации
  30. [править] Дополнительная информация
  31. [править] Примечания

unixforum.org

Пересылка пакетов между интерфейсами (ip_forward)

Пересылка пакетов между интерфейсами

Сообщение noname » 05.12.2007 10:33

Доброе время суток господа!
ОС Федора 8
Такая проблема, пытаюсь включить пересылку пакетов между интерфейсами:
echo «1» > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

в iptables в цепочку forward добавляю необходимое правило перед стандартным (то что по умолчанию делает REJECT):
iptables -I FORWARD 1 —src 192.168.1.0/24 -j ACCEPT
в таблице nat включаю маскарадинг
iptables -t nat -I POSTROUTING 1 —src 192.168.1.0/24 -j MASQUERADE

пробую выйти в инет с клиента из этой подсети (192.168.1.0/24) не пускает, однако пакеты (если смотреть по счетчику) по правилу проходят

заметил еще такую бяку, возможно баг — при поднятии интерфейсов init скрипт network (/etc/init.d/network) выключает пересылку пакетов (Запрещается маршрутизация пакетов IPv4: net.ipv4.ip_forward = 0)
если посмотреть в исходники скрипта:
.
if [ -d /proc/sys/net/ipv4 ]; then
if [ -f /proc/sys/net/ipv4/ip_forward ]; then
if [ `cat /proc/sys/net/ipv4/ip_forward` != 0 ]; then
action $»Disabling IPv4 packet forwarding: » sysctl -w net.ipv4.ip_forward=0
fi
.
разве это верно at /proc/sys/net/ipv4/ip_forward` != 0 (почемуто мне кажется что должно быть !=1 или =0)

подскажите куда посмотреть

Источник

Маршрутизация в Linux

Linux предоставляет большой набор функций для маршрутизации и инструменты для ее настройки. Ядро 2.6.x поддерживает:

  • Простую статическую маршрутизацию.
  • Equal Cost Multi Path маршруты (маршруты до одной сети с одинаковым весом, которые выбираются с равной вероятностью).
  • Blackhole-маршруты.
  • Множественные таблицы маршрутизации.
  • Policy Based Routing

[править] Команды

Для управления маршрутизацией применяются следующие команды: route, netstat, ip (последняя из пакета iproute2, возможно его придется установить).

Просмотреть таблицу можно следующими способами:

route -n (устаревшее) netstat -rn ip route show cat /proc/net/route

При этом следует учитывать, что доступ ко всем возможностям дает только ip. Используя route вы не только не сможете настроить «продвинутые» функции вроде политик маршрутизации, но и не увидите их существование в выводе команды просмотра, если они уже настроены в системе. Поэтому следует по возможности использовать ip.

Читайте также:  Installing deb on arch linux

Модификация таблицы маршрутизации:

[править] Использование route

Добавление маршрута через шлюз: route add -net 192.168.0.0/16 gw 10.0.0.1 Добавление маршрута через интерфейс: route add -net 192.168.0.0/16 dev eth1 Маршрут до отдельного хоста: route add -host 192.168.0.1 gw 172.16.0.1 Удаление маршрута: route del . 

[править] Использование ip

Синтаксис ip по структуре напоминает синтаксис Cisco IOS. Любые опции могут быть сокращены до потери двусмысленности, например «ip ro ad» вместо «ip route add».

Добавление маршрута через шлюз: ip route add 172.16.10.0/24 via 192.168.1.1 Добавление маршрута через интерфейс: ip route add 172.16.10.0/24 dev eth0 Маршрут с метрикой: ip route add 172.16.10.0/24 dev eth0 metric 100 

Командой вида ip route add blackhole 10.56.50.0/27 можно добавить «зануленный» маршрут (аналог «ip route . null0» в Cisco). Пакеты в сеть с таким маршрутом будут удалены с причиной «No route to host». Может быть полезно для подавление DoS-атаки с хоста или иных подобных случаев.

[править] Действия с маршрутами

Кроме add также поддерживаются и другие действия:

  • del — удалить маршрут.
  • replace — заменить маршрут другим.
  • change — изменить параметры маршрута.

[править] Equal Cost Multi Path

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

ip route add default dev eth0 ip route add default dev eth1

[править] IPv6

Настройка маршрутизации IPv6 почти идентична настройке для IPv4.

ip route add ::/0 via 2001:db8:dead:beef::1/64

В некоторых дистрибутивах еще есть нерешенная проблема с маршрутом по умолчанию (например, старые версии RHEL), используйте

[править] Просмотр маршрутов до определенной сети

На маршрутизаторах с длинной таблицей может быть неудобно просматривать вывод «ip route show» в поисках нужного маршрута. В этом случае можно использовать команду вида:

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

[править] Пересылка пакетов между интерфейсами

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

За этот параметр для IPv4 отвечает переменная net.ipv4.ip_forward (1 = «разрешить», 0 = «запретить»).

cat /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward

Для IPv6 используйте net.ipv6.conf.all.forwarding

cat /proc/sys/net/ipv6/conf/all/forwarding echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

Чтобы настройки сохранились после перезагрузки, пропишите значения net.ipv4.ip_forward и net.ipv6.conf.all.forwarding в /etc/sysctl.conf.

Читайте также:  Assassins creed black flag linux

[править] Конфигурационные файлы

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

  • Debian GNU/Linux: /etc/network/interfaces
  • RHEL/CentOS/Scientifix: etc/sysconfig/network-scripts/route-
  • Gentoo: /etc/conf.d/net

(добавьте свои дистрибутивы, пожалуйста)

[править] Policy routing

ip route add default via 10.0.1.2 ip rule add from 192.168.1.1 lookup 3 ip route add default via 10.0.3.4 table 3

Для хоста 192.168.1.1 используется особенная таблица маршрутизации (table 3), не такая как для всех остальных хостов. В ней указан единственный маршрут — маршрут по умолчанию.

Все будут ходить через шлюз 10.0.1.2, а 192.168.1.1 — через 10.0.3.4.

[править] Демоны динамической маршрутизации

[править] Дополнительная информация

[править] Примечания

Основные понятия
Сетевой интерфейс | IP | IP-адрес | Маска подсети | Широковещательный адрес | Маршрут | IPv6
Маршрутизация | Форвардинг | Таблица маршрутизации | Шлюз по умолчанию
Маршрутизация в Linux | Маршрутизация в FreeBSD | Маршрутизация в Cisco

Источник

Маршрутизация в Linux

Linux предоставляет большой набор функций для маршрутизации и инструменты для ее настройки. Ядро 2.6.x поддерживает:

  • Простую статическую маршрутизацию.
  • Equal Cost Multi Path маршруты (маршруты до одной сети с одинаковым весом, которые выбираются с равной вероятностью).
  • Blackhole-маршруты.
  • Множественные таблицы маршрутизации.
  • Policy Based Routing

[править] Команды

Для управления маршрутизацией применяются следующие команды: route, netstat, ip (последняя из пакета iproute2, возможно его придется установить).

Просмотреть таблицу можно следующими способами:

route -n (устаревшее) netstat -rn ip route show cat /proc/net/route

При этом следует учитывать, что доступ ко всем возможностям дает только ip. Используя route вы не только не сможете настроить «продвинутые» функции вроде политик маршрутизации, но и не увидите их существование в выводе команды просмотра, если они уже настроены в системе. Поэтому следует по возможности использовать ip.

Модификация таблицы маршрутизации:

[править] Использование route

Добавление маршрута через шлюз: route add -net 192.168.0.0/16 gw 10.0.0.1 Добавление маршрута через интерфейс: route add -net 192.168.0.0/16 dev eth1 Маршрут до отдельного хоста: route add -host 192.168.0.1 gw 172.16.0.1 Удаление маршрута: route del . 

[править] Использование ip

Синтаксис ip по структуре напоминает синтаксис Cisco IOS. Любые опции могут быть сокращены до потери двусмысленности, например «ip ro ad» вместо «ip route add».

Добавление маршрута через шлюз: ip route add 172.16.10.0/24 via 192.168.1.1 Добавление маршрута через интерфейс: ip route add 172.16.10.0/24 dev eth0 Маршрут с метрикой: ip route add 172.16.10.0/24 dev eth0 metric 100 

Командой вида ip route add blackhole 10.56.50.0/27 можно добавить «зануленный» маршрут (аналог «ip route . null0» в Cisco). Пакеты в сеть с таким маршрутом будут удалены с причиной «No route to host». Может быть полезно для подавление DoS-атаки с хоста или иных подобных случаев.

[править] Действия с маршрутами

Кроме add также поддерживаются и другие действия:

  • del — удалить маршрут.
  • replace — заменить маршрут другим.
  • change — изменить параметры маршрута.

[править] Equal Cost Multi Path

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

ip route add default dev eth0 ip route add default dev eth1

[править] IPv6

Настройка маршрутизации IPv6 почти идентична настройке для IPv4.

ip route add ::/0 via 2001:db8:dead:beef::1/64

В некоторых дистрибутивах еще есть нерешенная проблема с маршрутом по умолчанию (например, старые версии RHEL), используйте

[править] Просмотр маршрутов до определенной сети

На маршрутизаторах с длинной таблицей может быть неудобно просматривать вывод «ip route show» в поисках нужного маршрута. В этом случае можно использовать команду вида:

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

[править] Пересылка пакетов между интерфейсами

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

За этот параметр для IPv4 отвечает переменная net.ipv4.ip_forward (1 = «разрешить», 0 = «запретить»).

cat /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward

Для IPv6 используйте net.ipv6.conf.all.forwarding

cat /proc/sys/net/ipv6/conf/all/forwarding echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

Чтобы настройки сохранились после перезагрузки, пропишите значения net.ipv4.ip_forward и net.ipv6.conf.all.forwarding в /etc/sysctl.conf.

[править] Конфигурационные файлы

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

  • Debian GNU/Linux: /etc/network/interfaces
  • RHEL/CentOS/Scientifix: etc/sysconfig/network-scripts/route-
  • Gentoo: /etc/conf.d/net

(добавьте свои дистрибутивы, пожалуйста)

[править] Policy routing

ip route add default via 10.0.1.2 ip rule add from 192.168.1.1 lookup 3 ip route add default via 10.0.3.4 table 3

Для хоста 192.168.1.1 используется особенная таблица маршрутизации (table 3), не такая как для всех остальных хостов. В ней указан единственный маршрут — маршрут по умолчанию.

Все будут ходить через шлюз 10.0.1.2, а 192.168.1.1 — через 10.0.3.4.

[править] Демоны динамической маршрутизации

[править] Дополнительная информация

[править] Примечания

Основные понятия
Сетевой интерфейс | IP | IP-адрес | Маска подсети | Широковещательный адрес | Маршрут | IPv6
Маршрутизация | Форвардинг | Таблица маршрутизации | Шлюз по умолчанию
Маршрутизация в Linux | Маршрутизация в FreeBSD | Маршрутизация в Cisco

Источник

Оцените статью
Adblock
detector