- IP Forwarding With net.ipv4.ip_forward
- Checking IP Forwarding Status
- How to Temporary Enable IP Forwarding
- How to Permanently Enable IP Forwarding
- Wrap Up
- About the author
- Denis Kariuki
- что именно делает? net.ipv4.ip_forward =
- ВНЕМАТЕЛЬНО СТАВИМ И ЧИТАЕМ ВОПРОСЫ
- Похожие темы
- Enabling IP-Forwarding for IPv4 in Debian GNU/Linux
- IP Forwarding As A Temporary Solution
- Enabling IP Forwarding Permanently
- Dealing With Systemd
- Conclusion
- 🖧 Как отключить / включить IP форвардинг на Linux
- Как проверить текущий статус переадресации IP
- Включение или отключение IP переадресации
IP Forwarding With net.ipv4.ip_forward
“IP forwarding in Linux refers to setting your Linux to accept incoming network packets and forwarding them to another network. Any modern Linux system does not allow IP forwarding as it wastes bandwidth as a regular user doesn’t need IP forwarding. However, if you need to set your Linux system to act as a gateway or router, you must enable IP forwarding and, in this case, IPv4 IP forwarding. If this sounds new to you, worry less, as this article covers all you need to know about IPv4 IP forwarding.”
Checking IP Forwarding Status
By default, your Linux system has IP forwarding disabled. You can confirm its status by checking the sysctl kernel or /proc. The values get displayed in binary, with 0 implying false and 1 implying true.
To check the status using the /proc value, use the command below.
Alternatively, you can query the sysctl kernel using the command below.
From both outputs, we note the status is 0, meaning net.ipv4.ip_forward is not enabled.
How to Temporary Enable IP Forwarding
Various scenarios may require you to enable IP forwarding. For instance, if you wish to use your Linux server as a NAT device or a router, you must configure your Linux to receive network packets from one interface while forwarding them to another. Configuring the IP forwarding as a permanent solution is not preferred. Instead, you should temporarily enable it, which resets on the next reboot.
To enable IP forwarding, also known as routing, use the echo command to change the default values from 0 to 1 or use the sysctl command.
To use the echo command to enable IP forwarding, run the command below.
Similarly, run the command below to enable IP forwarding using sysctl.
Once you set the new binary value for the IP forward, you can check its status using the earlier commands. It should output 1 to imply IP forwarding is enabled.
You should know that the settings configured above won’t persist after the next reboot. Alternatively, if you wish to regain the initial state of the disabled IP forwarding before the reboot, all you need is to change the values to 0 instead of 1.
Therefore, any of the commands below will disable the IP forwarding.
$ echo 0 > / proc / sys / net / ipv4 / ip_forward
$ sysctl -w net.ipv4.ip_forward= 0
We see that the status is disabled and set to 0.
How to Permanently Enable IP Forwarding
Permanently enabling IP forwarding is not recommended, but if you must, you can edit the sysctl.conf file, and the changes will survive a reboot until you again change the settings in the configuration file to disable it.
The changes are similar to those of a temporary configuration. You need to add the state 1 to enable and 0 to disable.
Using an editor of choice, open the /etc/sysctl.conf file. In our case, we are using nano editor, and you should have root privileges to modify the file.
Once opened, you can enable IP forwarding by adding the below line of code. You can also locate the line below in the file and uncomment it by deleting the #.
If the IP forwarding was enabled and you wish to disable it permanently, replace the above line of code with the one below.
Once you’ve edited the file, run the command below for the changes to take effect.
That’s it! You’ve successfully enabled IP forwarding permanently.
Wrap Up
This guide shows how to enable and disable IP forwarding either temporarily or permanently. Using the commands presented, you should easily configure your Linux distro depending on your tasks. Hopefully, you now understand net.ipv4.ip_forwarding.
About the author
Denis Kariuki
Denis is a Computer Scientist with a passion for Networking and Cyber Security. I love the terminal, and using Linux is a hobby. I am passionate about sharing tips and ideas about Linux and computing.
что именно делает? 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
ip_forward - BOOLEAN 0 - disabled (default) not 0 - enabled Forward Packets between interfaces. This variable is special, its change resets all configuration parameters to their default state (RFC1122 for hosts, RFC1812 for routers)
т.е. у меня пересылка пойдёт в моём примере, если 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 недостаточно?
Похожие темы
- Форум 8.04 Permission denied (2008)
- Форум Принудительно запрещается маршрутизация пакетов IPv4 (2007)
- Форум маршрутизация (2012)
- Форум Интерфейс (2010)
- Форум echo 1 > /proc/sys/net/ipv4/ip_forward (2004)
- Форум ipforward (разница есть или нет) (2005)
- Форум В чем разница между forward (2004)
- Форум Slackware8.1 ip_forward help pls (2003)
- Форум Разрешить хождение пакетов между интерфейсами (2012)
- Форум очистить все записи в iptables (2005)
Enabling IP-Forwarding for IPv4 in Debian GNU/Linux
Setting up a computer network can be tricky sometimes. Enabling IPv4 Forwarding on a Linux machine is a rather simple task, luckily.
The term IP Forwarding describes sending a network package from one network interface to another one on the same device. It should be enabled when you want your system to act as a router that transfers IP packets from one network to another.
On a Linux system the Linux kernel has a variable named `ip_forward` that keeps this value. It is accessible using the file `/proc/sys/net/ipv4/ip_forward`. The default value is 0 which means no IP Forwarding, because a regular user who runs a single computer without further components is not in need of that, usually. In contrast, for routers, gateways and VPN servers it is quite an essential feature.
Next, we will explain to you how to enable IP Forwarding temporarily, and permanently.
IP Forwarding As A Temporary Solution
In order to enable this kernel parameter on the fly you have two options. Option 1 simply stores the value of 1 in the variable from above as follows:
Option 2 uses the `sysctl` command that allows you to adjust different kernel parameters at runtime, too [2]. As an administrative user run the following command:
Keep in mind that this setting is changed instantly. Also, the result will not be preserved after rebooting the system.
You can query the stored value as follows:
This command returns a value of 0 for no IP Forwarding, and a value of 1 for IP Forwarding enabled. As an alternative, using `sysctl` also shows you the current status:
Enabling IP Forwarding Permanently
In order to achieve this some other steps have to be done. First, edit the file `/etc/sysctl.conf`. Search for a line containing the entry “#net.ipv4.ip_forward=1”, and remove the # at the beginning of the line.
Then, save the file, and run the `sysctl` command in order to enable the adjusted settings:
The option `-p` is short for `–load`, and requires a name for the configuration file to be followed.
Next, restart the proc file system that provides information about the status of the Linux kernel using the following command:
In about 2015 the file name was shortened from `procps.sh` to `procps`. So, on elderly Debian systems the script that you have to invoke is named `procps.sh`, instead.
Dealing With Systemd
The next hurdle came with the release of Systemd version 221. IP Forwarding is disabled by default, and enabling requires an additional file to be there. If it is not there yet, just add it. The file name consists of the name of the network interface followed by the suffix `.network`, for example `eth0.network` for the network interface `/dev/eth0`. As stated in the documentation [4], other extensions are ignored.
The following code snippet shows the setup for the network interface `/dev/tun0`. It contains of two sections — `Match` and `Network`. In the Match section define the name of the network interface, and in the network section enable IP Forwarding.
Conclusion
Activating IP Forwarding for IPv4 is not a mystery. Just a few steps, and your are there. Happy hacking!
🖧 Как отключить / включить IP форвардинг на Linux
В определенных сценариях может потребоваться настроить переадресацию IP в системе Linux.
Если сервер Linux действует как брандмауэр, маршрутизатор или устройство NAT, он должен быть способен пересылать пакеты, предназначенные для других пунктов назначения (кроме него самого).
И наоборот, проброс IP обычно следует отключать, если вы не используете одну из вышеупомянутых конфигураций.
Вы же не хотите, чтобы ваша система тратила впустую полосу пропускания или ресурсы для пересылки пакетов в другое место, если только она не предназначена для этой работы.
В этом руководстве мы рассмотрим пошаговые инструкции по включению или отключению IP-переадресации с помощью примеров командной строки.
Вы можете применить эти команды к любому крупному дистрибутиву Linux, включая популярные версии, такие как Ubuntu и Red Hat.
Как проверить текущий статус переадресации IP
Большинство систем смогут использовать команду sysctl, которая может применять переменные ядра.
Следовательно, вы можете использовать следующую команду sysctl, чтобы проверить, включена или отключена переадресация IP.
# sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 0
В приведенном выше примере параметр ядра net.ipv4.ip_forward равен 0.
Это означает, что переадресация выключена.
Если бы значение было бы 1, это означало бы, что включена.
Этот параметр также можно просмотреть в файле /proc/sys/net/ipv4/ip_forward в системах с systemd или любой другой системой инициализации.
Включение или отключение IP переадресации
Вы можете использовать следующую команду sysctl, чтобы включить или отключить переадресацию IP в вашей системе.
# sysctl -w net.ipv4.ip_forward=0 или # sysctl -w net.ipv4.ip_forward=1
Вы также можете изменить настройку внутри /proc/sys/net/ipv4/ip_forward, чтобы включить или выключить настройку.
# echo 0 > /proc/sys/net/ipv4/ip_forward или # echo 1 > /proc/sys/net/ipv4/ip_forward
Чтобы убедиться, что новый параметр сохранится после перезагрузки, вам необходимо отредактировать файл /etc/sysctl.conf.
Добавьте одну из следующих строк в конец файла в зависимости от того, хотите ли вы, чтобы переадресация IP была отключена или включена, соответственно.
net.ipv4.ip_forward = 0 или net.ipv4.ip_forward = 1
После редактирования файла вы можете запустить следующую команду, чтобы изменения сразу вступили в силу: