Назад | Перейти на главную страницу

lxc / lxd iptables, владелец вывода, исключает ошибки с «Недействительным аргументом».

Если я попытаюсь запустить следующую команду в моем контейнере lxc / lxd Ubuntu 14.04 amd64:

iptables -A OUTPUT -p tcp -m owner --uid-owner 0 -m tcp --dport 80 -j ACCEPT

Я получаю следующее сообщение об ошибке:

iptables: Invalid argument. Run `dmesg' for more information.

...но /var/log/dmesg не получает никакого дополнительного вывода.

Я уверен, что правило iptables действительно, потому что оно работает на хосте lxc / lxd и на других машинах. Часть, которая кажется виноватой, - это часть владельца, т.е. если я запустил это:

iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

... работает нормально.

Мне это кажется ошибкой в ​​lxc, но можно ли как-нибудь исследовать ее дальше?

Редактировать 1

Я собрал iptables из исходного кода с флагами отладки, а затем проследил выполнение. Это привело меня к iptables-standalone.c файл, в котором:

int iptc_commit(struct xtc_handle *handle);

... функция возвращает EINVAL код ошибки. Проблема в том, что я не могу отследить источник этой функции. Кажется, находится в libip4tc.so общая библиотека, но я не могу отследить источник этой библиотеки.

Если кто-то знает, где находится источник, я был бы признателен, если бы вы сообщили мне об этом.

Редактировать 2

Ссылаться на этот lxc GitHub проблема, которую я создал, которая рисует больше картины. Я собираюсь сдаться только потому, что работа слишком обширна для меня, когда я могу просто обойти проблему, избегая правил iptables, соответствующих «владельцу» в контейнерах.

Все, что вам нужно сделать, это установить для конфигурации "security.privileged" контейнера значение "true", так как по умолчанию установлено значение "false".

Т.е. Ссылаться на этот и найдите эту конфигурацию "security.privileged".

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