
У меня есть виртуальная машина с публичным IP-интерфейсом и частным IP-интерфейсом. Частный интерфейс назначен 192.168.50.78. Затем у меня есть выделенный хост, который действует как мой «маршрутизатор», используя частный IP-адрес 192.168.50.1, и, следовательно, это мой шлюз для моей локальной сети 192.168.50.0/24. «Маршрутизатор» у меня — OPNsense.
При этом я пытаюсь смонтировать в своей виртуальной машине два удаленных сервера NFS. Монтирование не удается из-за нелегального порта, исходящего от моей виртуальной машины, которая находится за NAT:
[root@NFSHOST ~]# tail -f /var/log/messages | grep "rpc.mountd"
Feb 21 22:31:40 NFSHOS rpc.mountd[28721]: refused mount request from 197.189.XXX.ZZZ for /data/secondary (/data/secondary): illegal port 33744
Feb 21 22:35:22 NFSHOS rpc.mountd[28721]: refused mount request from 197.189.XXX.ZZZ for /data/secondary (/data/secondary): illegal port 40085
И это из-за происходящего преобразования портов. Решение — добавить insecure
в мой /etc/export
файл, что я проверил и могу подтвердить, что это действительно работает.
Однако, как он предполагает, это insecure
и крайне не рекомендуется. Я пробовал добавить правило переадресации портов на OPNsense, и по какой-то причине оно по-прежнему не работает с нелегальными портами.
Есть ли способ решить эту проблему? P.S. Я также не могу использовать режим «моста». Мне нужно установить какое-то правило в OPNsense, чтобы обработать это соответствующим образом, но я не совсем уверен.
решение1
Наконец-то удалось решить эту конкретную проблему. Мне сказали здесь:Ссылка OPNsense
Следующее:
Серверы NFS IIRC ожидают, что исходные порты, поступающие от клиентов, будут ниже 1024, чтобы считаться безопасными. Обязательно проверьте «Static-port» в правиле исходящего трафика NAT, чтобы предотвратить изменение брандмауэром исходного порта в пакетах TCP и UDP.
В итоге я добавил правило NAT outbound на OPNsense для всей локальной сети с включенным статическим портом, и это решило проблему. Теперь я могу монтировать NFS через безопасные диапазоны портов.
решение2
Для меня проблема была в том, что сервер не поддерживал старую версию протокола. Вы можете либо заставить клиента использовать другую версию, например так:
mount -o vers=3 -t nfs 123:/
Это относится к стандартному клиенту Linux, конечно. Если вы не можете повлиять на клиента, как этот, проверьте этот пост, как иметь поддержку других протоколов на стороне сервера: