- Linux net ipv4 ip forward
- что именно делает? net.ipv4.ip_forward =
- ВНЕМАТЕЛЬНО СТАВИМ И ЧИТАЕМ ВОПРОСЫ
- Как включить IP Forwarding в Linux
- Как включить/выключить IP Forwarding в Linux
- Проверяем включен или нет IP Forwarding в данный момент
- Временно включаем/отключаем IP Forwarding
- Постоянно включаем/отключаем IP Forwarding в системе
- How to enable IP Forwarding in Linux
- Check if IP Forwarding is enabled
- Enable IP Forwarding on the fly
- Permanent setting using /etc/sysctl.conf
- Using distribution specific init scripts
Linux net ipv4 ip forward
Маршрутизация транзитных IP-пакетов (не предназначенных для этого компьютера), или IP-форвардинг, является опциональной возможностью IP-стека Linux. По умолчанию функция форвардинга не активируется, и система не пересылает транзитные пакеты через свои интерфейсы, а только обрабатывает адресованные ей пакеты. Включение форвардинга IP-пакетов производится через параметр net.ipv4.ip_forward интерфейса sysctl . Если значение этого параметра равно 0, то форвардинг отключен, если же значение параметра не равно 0, форвардинг включен:
Кроме того, возможно разрешать или запрещать участие в форвардинге для каждого интерфейса индивидуально:
По умолчанию форвардинг включается и выключается для всех интерфейсов одновременно, но для отдельных интерфейсов возможно сменить флаг участия в форвардинге. Изменять параметры форвардинга может только системный администратор или пользователь, который имеет право записи в необходимые файлы интерфейса sysctl . Следующий листинг демонстрирует включение форвардинга через все интерфейсы путем вызова программы sysctl :
В процессе маршрутизации для выбора интерфейса и следующего узла для доставки пакета (next hop) ядро использует таблицу маршрутизации. Эта таблица представляет список критериев, в соответствии с которыми выбирается следующий узел. В частности, в таблице маршрутизации фигурируют следующие условия: адрес сети получателя пакета, маска подсети получателя пакета, IP-адрес следующего узла, метрика маршрута и служебные поля (например, тип и возраст записи). Таблица маршрутизации используется не только в IP-форвардинге, но и даже при простой отсылке IP-пакета для выбора интерфейса, через который будет производиться отсылка пакета.
Запись о сети с адресом 0.0.0.0 и маской подсети 0.0.0.0 называют маршрутом по умолчанию, или default route. Узел, чей адрес указан в поле gateway для маршрута по умолчанию, называют маршрутизатором по умолчанию, или default gateway или default router. В системе может быть произвольное количество маршрутов по умолчанию, но они должны быть как минимум с разными метриками. Для просмотра таблицы маршрутизации можно воспользоваться командой route. Эта команда позволяет оперировать с таблицей маршрутов, добавляя и удаляя из нее записи.
В данном выводе таблица упорядочена по маске подсети, что соответствует порядку ее просмотра ядром. Столбцы Destination и Genmask содержат адрес и маску сети получателя пакета, столбец Metric фактически указывает приоритет маршрута (маршрут с меньшей метрикой более приоритетен), поле Gateway указывает IP-адрес следующего узла для передачи пакета. Некоторые типы интерфейсов (в частности, интерфейсы типа точка-точка, или point-to-point) подразумевают, что на принимающем конце линии связи всегда находится не более одного узла, и поэтому в этой ситуации IP-адрес следующего узла можно не указывать. В данном случае мы видим, что в приведенном примере некоторые узлы доступны через интерфейс ppp0 типа точка-точка. В частности, именно из-за этого свойства приведенная выше таблица оказывается эквивалентна следующей ниже. Жирным шрифтом помечена измененная строка, демонстрирующая “точечную” природу PPP-соединения:
Специфика использования протокола PPP (обычно используемого при модемых соединениях) такова, что любой PPP-интерфейс является интерфейсом типа точка-точка, более того – PPP и расшифровывается как Point-to-Point Protocol. Также интерфейсами точка-точка являются интерфейсы SLIP (Serial Line IP) и практически все разновидности туннельных интерфейсов.
При деактивизации интерфейса из таблицы маршрутизации автоматически исключаются все маршруты, для которых в поле Iface был указан отключившийся интерфейс. Для некоторых типов интерфейсов при активизации в таблице маршрутизации также создаются служебные записи о маршрутах, которые нельзя удалить.
В большинстве случаев таблица маршрутизации имеет не слишком большой размер, но в некоторых ситуациях (в частности, на шлюзовых машинах в больших сетях) таблица может иметь весьма значительный размер и изменяется не “вручную” с помощью команды route, а специальными программами – демонами поддержки протоколов динамической маршрутизации. С некоторыми упрощениями алгоритм работы этих демонов можно описать следующим образом: демон “слушает” приходящие пакеты для обслуживаемых протоколов динамической маршрутизации, и по получении (или неполучении) такого пакета отдает ядру команду на изменение таблицы маршрутизации.
Следует также заметить, что команда route в режиме вывода таблицы маршрутизации фактически просто фильтрует и форматирует данные, содержащиеся в специальном файле, называемом /proc/net/route, используемом для доступа к таблице маршрутизации, ведущейся ядром.
Источник
что именно делает? net.ipv4.ip_forward =
net.ipv4.ip_forward = 1 ( echo 1 > /proc/sys/net/ipv4/ip_forward )
если у меня eth1 (192.168.1.1) и eth0 (192.168.2.1), то она разрешит пересылку пакетов из одной сети в другую? если нет, то зачем оно надо? можно по подробнее, зачем оно надо и почему iptables недостаточно?
Что бы вы ни написали в iptables, пока у вас 0 в /proc/sys/net/ipv4/ip_forward, пакеты между сетями пересылаться не будут.
Ключ, разрешающий обмен между сетевыми интерфейсами, так?
>почему iptables недостаточно
по причине безопасности, т.к. во многих дистрибутивах изначально iptables не настроен, что равносильно действию ACCEPT во всех цепочках, включая FORWARD
т.е. у меня пересылка пойдёт в моём примере, если iptables не настроен?
Не пойдет — подсети разные.
Почему нет? Если гейтвей стоит у обеих сетей этот сервак то пойдёт вполне себе.
Ваш Гетвей его и дропнит .. Если конечно у вас обе подсети не весят на одном интерфейсе
Здесь подробнее, пожалуйста. Т.е. гейтвей на 1.1 дропнет перенаправленый пакет из 2.1?
Да. Блокируются все пакеты которые хотят влететь в одну сетевуху а вылетит с другой. всё просто как трусы .. блакировка меж интерфейсами на уровне ядра..
А как тогда работают роутеры, которые два сегмента сети соединяют? По идее они тоже все пакеты должны дропать?
Мы обсуждаем параметр net.ipv4.ip_forward и случай если он отключён Будьте внимательней, если его активировать то пакеты меж сетями станут бегать.
> Да. Блокируются все пакеты которые хотят влететь в одну сетевуху а вылетит с другой. всё просто как трусы .. блакировка меж интерфейсами на уровне ядра..
неверно. в случае, если этот параметр выключен, ОС считает себя узлом IP сети и дропает все пакеты, предназначенные не ей (т.е. destination address которых отличен от IP-адресов, назначенных на интерфейс, на котором получен пакет), в функции ip_input()
если параметр включен, то ОС считает себя маршрутизатором и действует в соответствии с RFC1812, в том числе пытается переслать адресованные не ей пакеты в соответствии с таблицой маршрутизации.
если у тебя пустой(читай — ненастроенный iptables) с дефолтной политикой ACCEPT и стоит ip_forward=1, то да, пойдет пересылка ЛЮБОГО ipv4 трафика, направленного через твою машину
Чего ему его дропать то если ip_forward включен у товарища в топике?
ВНЕМАТЕЛЬНО СТАВИМ И ЧИТАЕМ ВОПРОСЫ
Автор топика какбы просит объяснить зачем оно нужно а не жалуется на не работу сабжа
если нет, то зачем оно надо? можно по подробнее, зачем оно надо и почему iptables недостаточно?
Источник
Как включить IP Forwarding в Linux
Хотите превратить ваш компьютер в маршрутизатор или интернет-шлюз? Первым делом, вы должны включить пересылку IP-пакетов (IP Forwarding).
Если вы хотите превратить ваш компьютер в маршрутизатор или интернет-шлюз (а может быть даже и в VPN-сервер!), вам необходимо включить IP forwarding, который позволит перенаправлять IP-пакеты с одного сетевого интерфейса на другой.
По умолчанию, в большинстве дистрибутивов Linux, IP forwarding отключен.
Перед тем, как его включать, необходимо убедиться в его текущем состоянии — включен он или выключен?.
Откроем Терминал и выполним в командной строке следующую команду:
sudo cat /proc/sys/net/ipv4/ip_forward
Если результатом ее выполнения явилась цифра 1, появившаяся на экране, это означает, что IP forwarding у вас включен и вам ничего предпринимать не нужно.
Если на экране появилась цифра 0, то это означает, что IP forwarding отключен в вашей системе. Приступим к его включению.
Включение IP forwarding.
Для того, чтобы включить пересылку IP-пакетов (IP forwarding) необходимо перейти в режим суперпользователя root (выполнив в консоли команду sudo bash и введя верный пароль). Далее необходимо выполнить любую из представленных ниже команд:
sudo sysctl -w net.ipv4.ip_forward=1 или echo 1 > /proc/sys/net/ipv4/ip_forward
После выполнения одной из этих команд, IP forwarding в вашей системе будет включен и IP-пакеты будут пересылаться с одного сетевого интерфейса на другой.
Для того, чтобы после запуска системы, IP forwarding включался автоматически, откройте в своем любимом текстовом редакторе файл /etc/sysctl.conf, отыщите там строку, начинающуюся с net.ipv4.ip_forward и придайте ей вид:
Выйдите из редактора с сохранением файла, затем выполните в командной строке команду: sudo sysctl -p /etc/sysctl.conf (это позволит применить сделанные нами изменения без перезапуска системы).
Все! При включенном IP forwarding, IP-пакеты должны у вас активно «бегать», а пользователи радоваться появившемуся у них Интернету.
Источник
Как включить/выключить IP Forwarding в Linux
Почти во всех распространенных дистрибутивах IP Forwarding выключен по-умолчанию и это имеет смысл, так как далеко не каждый его использует. Но в том случае, если вы планируете поднять собственный маршрутизатор на ОС Linux, настроить VPN сервер и так далее, вам необходимо включить форвардинг пакетов (маршрутизацию транзитных IP-пакетов, т.е. тех пакетов, которые не предназначены именно для вашего компьютера) в вашей ОС. В данной мини-инструкции я расскажу как это можно сделать:
Проверяем включен или нет IP Forwarding в данный момент
Для проверки в каком состоянии в данный момент находится форвардинг пакетов (включен или выключен), мы должны сделать запрос к ядру через команду sysctl. Делается это так:
В ответ мы получим текущий статус (1 — включен, 0 — выключен)
Временно включаем/отключаем IP Forwarding
Чтобы включить форвардинг пакетов «на лету» и не перезагружать систему, нам достаточно выполнить следующую команду:
Чтобы выключить форвардинг пакетов «на лету» и не перезагружать систему, нам достаточно выполнить следующую команду:
Постоянно включаем/отключаем IP Forwarding в системе
В том случае, если нам необходимо перманентно включить или отключить форвардинг пакетов в системе, нам необходимо внести правки в конфигурационный файл /etc/sysctl.conf
Для перманентного включения IP Forwarding, в конец данного файла добавляем следующую строчку:
Для перманентного отключения IP Forwarding, в конец данного файла добавляем следующую строчку:
. И сохраняем отредактированный файл.
Далее, чтобы применить новую настройку, которую мы добавили, нам необходимо выполнить следующую команду:
Источник
How to enable IP Forwarding in Linux
By default any modern Linux distributions will have IP Forwarding disabled. This is normally a good idea, as most peoples will not need IP Forwarding, but if we are setting up a Linux router/gateway or maybe a VPN server (pptp or ipsec) or just a plain dial-in server then we will need to enable forwarding. This can be done in several ways that I will present bellow.
Check if IP Forwarding is enabled
We have to query the sysctl kernel value net.ipv4.ip_forward to see if forwarding is enabled or not: Using sysctl:
or just checking out the value in the /proc system:
As we can see in both the above examples this was disabled (as show by the value 0).
Enable IP Forwarding on the fly
As with any sysctl kernel parameters we can change the value of net.ipv4.ip_forward on the fly (without rebooting the system):
the setting is changed instantly; the result will not be preserved after rebooting the system.
Permanent setting using /etc/sysctl.conf
If we want to make this configuration permanent the best way to do it is using the file /etc/sysctl.conf where we can add a line containing net.ipv4.ip_forward = 1
if you already have an entry net.ipv4.ip_forward with the value 0 you can change that 1.
To enable the changes made in sysctl.conf you will need to run the command:
On RedHat based systems this is also enabled when restarting the network service:
and on Debian/Ubuntu systems this can be also done restarting the procps service:
Using distribution specific init scripts
Although the methods presented above should work just fine and you would not need any other method of doing this, I just wanted to note that there are also other methods to enable IP Forwarding specific to some Linux distributions. For example Debian based distributions might use the setting:
set it to yes and restart the network service. Also RedHat distributions might set this using:
and again restart the network service.
Regardless the method you have used once you have completed this you can check it out using the same method shown above:
If the result is 1 then the Linux system will start forwarding IP packets even if they are not destined to any of its own network interfaces.
ps. I was setting up a VPN dial-in server when I wrote this post ;-).
Источник