Как указать конкретный адрес привязки для nfs-kernel-server в Debian 11.4
Я просто отказываюсь верить, что это не какая-то функция, мне нужно заставить NFS прекратить прослушивание адресов IPv6 сервера, а также ограничить, какие из его адресов IPv4 он также прослушивает.
Я исследовал проблему часами, но все время находил одни и те же четыре или пять ответов на разных сайтах, которые не дают подходящего решения.
Когда я запускаю сервер, я вижу, что NFS открыла больше, чем несколько портов:
rpc.mount 7609 root 8u IPv4 124179 0t0 UDP *:34231
rpc.mount 7609 root 9u IPv4 124181 0t0 TCP *:55443 (LISTEN)
rpc.mount 7609 root 10u IPv6 124183 0t0 UDP *:46874
rpc.mount 7609 root 11u IPv6 124185 0t0 TCP *:55829 (LISTEN)
rpc.mount 7609 root 12u IPv4 124187 0t0 UDP *:52359
rpc.mount 7609 root 13u IPv4 124189 0t0 TCP *:37975 (LISTEN)
rpc.mount 7609 root 14u IPv6 124191 0t0 UDP *:41861
rpc.mount 7609 root 15u IPv6 124193 0t0 TCP *:33973 (LISTEN)
rpc.mount 7609 root 16u IPv4 124195 0t0 UDP *:40059
rpc.mount 7609 root 17u IPv4 124197 0t0 TCP *:50589 (LISTEN)
rpc.mount 7609 root 18u IPv6 124199 0t0 UDP *:40265
rpc.mount 7609 root 19u IPv6 124201 0t0 TCP *:35625 (LISTEN)
rpcbind 8103 _rpc 4u IPv4 13941 0t0 TCP *:111 (LISTEN)
rpcbind 8103 _rpc 5u IPv4 71849 0t0 UDP *:111
rpcbind 8103 _rpc 6u IPv6 13945 0t0 TCP *:111 (LISTEN)
rpcbind 8103 _rpc 7u IPv6 23221 0t0 UDP *:111
Мне нужно отключить все IPv6 и отключить прослушивание IPv4.*
слушать дальше172.24.24.21
,172.24.24.22
, и172.24.24.23
Неэффективный метод №1:
Согласно https://wiki.debian.org/NFSServerSetup , я мог бы добиться этого, изменив/etc/default/nfs-kernel-server
содержать эту строку:
RPCMOUNTDOPTS="-H 172.24.24.21 -H 172.24.24.22 -H 172.24.24.23"
Апон перезапускает обаrpcbind
иnfs-kernel-server
вывод остается неизменным, он отображает ту же информацию, что и показанная в примере выше.
Неэффективный метод №2:
Чтобы хотя бы исправить rpcbind, файл/etc/default/rpcbind
заявляет следующее:
# Uncomment the following line to restrict rpcbind to localhost only for UDP requests
#OPTIONS="${OPTIONS} -h 127.0.0.1 -h ::1"
Я попытался раскомментировать эту строку и заменить ее следующим:
OPTIONS="${OPTIONS} -h 172.24.24.21"
Мало того, что выходные данные остались прежними после перезапуска обеих служб, htop также показал, что физическая команда, выполняемая systemd для запуска службы, была буквально:
/sbin/rpcbind -f ${OPTIONS} -h 172.24.24.21
Я попробовал вручную заменить${OPTIONS}
с правильным значением в файле, например:
OPTIONS="-w -h 127.0.0.1"
Что правильно установило команду, запускаемую systemd, как показано в htop:
/sbin/rpcbind -f -w -h 172.24.24.21
Но все же выводlsof -i -P
остается точно таким же, как и в начале этого поста, все порты по-прежнему открыты для всех IPv4 и IPv6, как для TCP, так и для UDP, что вызывает у меня много паранойи, зная, что к машине можно получить глобальный доступ по ее адресам IPv6.
Неэффективный метод №3:
я должен редактировать/etc/nfs.conf
и определитьhost=
, но, похоже, это метод только для всех наиболее престижных дистрибутивов Linux. Я всегда предпочитал обезглавленный Debian для серверов, и я не хочу просто искоренить всю свою инфраструктуру и установить совершенно другой дистрибутив на мой основной сервер хранения файлов, чтобы решить эту проблему, потому что это заняло бы неделю простоя и возни, с которой я просто не иметь
Неэффективный метод №4:
Создайте сценарий для автоматической настройки iptables, чтобы блокировать определенные порты, открываемые при каждом перезапуске службы.
Нет, я этого не делаю, это смешно. Я отказываюсь верить, что не существует способа просто правильно изменить адрес привязки, как это позволяет сделать любая другая сетевая служба в 2022 году.
Другие вопросы:
Systemd уже прослушивает четыре:111
адреса со своим собственным сервисом «rpc». Насколько я понимаю, rpcbind не должен запускаться, когда служба systemd уже связала порты, но это явно так. Если предположить, что это ошибка, какой процесс получает какие-либо соединения с портом 111 в этом сломанном состоянии? Как запретить systemd открывать эти порты? Мне также не нужно, чтобы компоненты systemd rpc сидели и ждали, пока кто-нибудь взломает.
Кто-нибудь, скажите мне, пожалуйста, что здесь происходит, я потратил на это полдня.