Включение передачи IP во время компиляции ядра

Этот ответ дополняет ответ Кристиана Сьюпиту . Если вы используете сжатие xz с разумным размером блока, вы можете получить доступ к образу диска, используя guestfish или другие инструменты libguestfs, как например:

nbdkit xz file=disk.img.xz --run 'guestfish --format=raw -a $nbd -i'

UPDATE: Так как xz больше не является плагином, а стал фильтром, команда теперь:

nbdkit file disk.img.xz --filter xz --run 'guestfish --format=raw -a $nbd -i'

1
10.04.2014, 12:20
3 ответа
[1131973] Источник ядра Linux не имел опции [1132380]CONFIG_IP_FORWARDING[1132381] со времен серии ядра [1132382]2.0.x[1132383]. Насколько я знаю, больше нет опции времени компиляции для включения IP переадресации по умолчанию для собранного ядра.

Начиная с версии 2.1.x, правильным способом включения IP переадресации для IPv4 была опция

net.ipv4.ip_forward

lsof | grep ":8888"

sysctl

alias lsof='sudo lsof -Pni4 | grep LISTEN'
.

Добавьте следующую строку к [1132388]sysctl.conf[1132389] (или файл в [1132390]/etc/sysctl. d[1132391]):

Затем перезагрузите параметр [1132392]sysctl[1132393]:

Тем не менее, если по каким-либо причинам вам нужно настроить ядро так, чтобы установка параметра sysctl (или эквивалента [1132394]/proc[1132395]) во время загрузки не требовалась, вы можете изменить значение по умолчанию для параметра [1132396]sysctl[1132397] непосредственно в дереве исходных текстов ядра*.

Запись в таблице [1132398]sysctl[1132399] для [1132400]/proc/sys/net/ipv4/ip_forward[1132401] инициализируется из статической структуры, определенной в [1132402]net/ipv4/devinet. c[1132403]:

Поле [1132404]data[1132405] инициализируется для указания на запись в целочисленном массиве [1132406]data[1132407], который является полем в статической структуре [1132408]ipv4_devconf[1132409]. Эту запись идентифицирует [1132410]IPV4_DEVCONF_FORWARDING[1132411] перечисленное значение, определенное в [1132412]include/uapi/linux/ip.h[1132413]. Массив данных [1132414]data[1132415], содержащийся в структуре, инициализируется лишь частично, опуская запись [1132416]IPV4_DEVCONF_FORWARDING[1132417]. Поскольку структура имеет статическое хранение, все члены интегрального типа инициализируются до нуля. Следовательно, для установки поля данных для записи таблицы [1132418]ip_forward

sysctl[1132421], а также записанного значения по умолчанию, необходимо инициализировать [1132422]ipv4_devconf. data[IPV4_DEVCONF_FORWARD - 1][1132423] и соответствующее поле в структуре [1132424]ipv4_devconf_dflt[1132425] к [1132426]1[1132427]. Этого можно добиться с помощью следующего патча:

* [1132714]Отказ от ответственности:[1132715] Я не эксперт по сетевым внутренним устройствам Linux, поэтому вполне возможно, что описанный здесь метод пропускает некоторые инициализации, обычно выполняемые [1132716]devinet_sysctl_forward()[1132717], когда переадресация обычно включается через [1132718]sysctl[1132719], так что действуйте осторожно. Вышеуказанный патч, кажется, работает против версии ядра 3.14 в той степени, в которой [1132720]/proc/sys/net/ipv4/ip_forward[1132721] действительно указывает на то, что переадресация должна быть включена по умолчанию, без конфигурирования через [1132722]sysctl[1132723]. Насколько я вижу, 3.12.14 не отличается в отношении инициализации записи [1132724]sysctl[1132725]. Я включил патч в надежде, что он будет полезен, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

4
27.01.2020, 23:28
[1130998] Я не знаю ни одного решения для статического включения (и, по крайней мере, в последних ядрах нет [1131423]CONFIG_IP_FORWARD[1131424] - только [1131425]grep[1131426]ed источник).

С точки зрения безопасности это все равно не кажется хорошей идеей, так как во многих случаях вы можете настроить некоторые другие вещи перед включением переадресации (например, правила фильтрации, правила QoS, [более точные] правила маршрутизации).[1131001].

0
27.01.2020, 23:28
[1131042]IP переадресация является основной функциональностью сетевого кода в Linux. Поэтому для него отсутствует конфигурационная переменная[1131043].
-1
27.01.2020, 23:28

Теги

Похожие вопросы