Страница 1 из 1

[NFS] разрешаем nfs на ipfw

Добавлено: 2008-12-13 21:28:57
Gloft
На сервере FreeBSD 7.0-RELEASE
Он же маршрутизатор, он же nfs сервер, он же фаервол.
Никак немогу заставить работать nfs.
В конфиге ipfw правила записаны до правил nat-а.

Код: Выделить всё

#  nfsd
${FwCMD} add allow tcp from any to ${IpIn} 2049 via ${LanIn}
${FwCMD} add allow udp from any to ${IpIn} 2049 via ${LanIn}
# portmapper
${FwCMD} add allow tcp from any to ${IpIn} 111 via ${LanIn}
${FwCMD} add allow udp from any to ${IpIn} 111 via ${LanIn}
# mount
${FwCMD} add allow tcp from any to ${IpIn} 745,747 via ${LanIn}
${FwCMD} add allow udp from any to ${IpIn} 745,747 via ${LanIn}
Если смотреть по ipfw show, то колличество пакетов
по ним практически нет, только на порт 111 и все.
На всякий случай приведу все правила.
Правло "все для всех" тоже не помогает.
Точно знаю что из-за nat-а.

Код: Выделить всё

#!/bin/sh
FwCMD="/sbin/ipfw -q"
LanOut="em1"
LanIn="em0"
IpOut="Х.Х.Х.Х"
IpIn="Р.Р.Р.Р"
NetMask="24"
NetIn="Р.Р.Р.Р"

# Сбрасываем все правила
${FwCMD} -f flush

# проверяем соответствует ли пакет динамическим правилам
#${FwCMD} add check-state

# закрываем дыры и уязвимости
${FwCMD} add deny tcp from any to any 135,445

# разрешаем трафик через внутренний интнрфейс
${FwCMD} add allow ip from any to any via lo0

#  nfsd
${FwCMD} add allow tcp from any to ${IpIn} 2049 via ${LanIn}
${FwCMD} add allow udp from any to ${IpIn} 2049 via ${LanIn}
# portmapper
${FwCMD} add allow tcp from any to ${IpIn} 111 via ${LanIn}
${FwCMD} add allow udp from any to ${IpIn} 111 via ${LanIn}
# mount
${FwCMD} add allow tcp from any to ${IpIn} 745,747 via ${LanIn}
${FwCMD} add allow udp from any to ${IpIn} 745,747 via ${LanIn}

# запрещаем ssh через внешний интерефейс
${FwCMD} add deny tcp from any to ${IpOut} 22 via ${LanOut}

# запрещаем мультикастовые рассылки
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}

# запрещаем широковещательные пакеты
${FwCMD} add deny icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add deny icmp from any to 255.255.255.255 out via ${LanOut}

# перенаправляем весь трафик через NAT
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}

${FwCMD} add allow ip from any to any

${FwCMD} add deny ip from any to any

Re: [NFS] разрешаем nfs на ipfw

Добавлено: 2008-12-13 21:58:19
f_andrey
Gloft писал(а):На сервере FreeBSD 7.0-RELEASE
Он же маршрутизатор, он же nfs сервер, он же фаервол.
Никак немогу заставить работать nfs.
может стоит открыть еше

Код: Выделить всё

nfsd-status     1110/tcp   #Cluster status info
nfsd-keepalive  1110/udp   #Client status info
ну или поглядеть в лог что там ему еше надо, логи собственно для этого и пишутся :oops:
да кстати думаю

Код: Выделить всё

${FwCMD} add allow ip from any to any
только в целях отладки, иначе у вас выйдет скорее всего решето.

Re: [NFS] разрешаем nfs на ipfw

Добавлено: 2008-12-14 0:37:37
Gloft
Да пробовал и эти порты, результат тотже.
Тоесть никакого.
По ним ни одно правило не срабатывает.
Логи смотрел.
На клиенте, при монтировании пишет ошибки по тайм ауту.
На сервере все в /var/log/messages пусто.
С предпоследним правилом все должно работать в любом случае.
Но ожидания не оправдываются.
Вот только при исключении правил с натом все начинает работать в соответствии с политикой фаервола.
Если ставить первым правилом

Код: Выделить всё

${FwCMD} add allow ip from any to any via ${LanIn}
То это преблему не решает, а если его заменить на

Код: Выделить всё

${FwCMD} add allow ip from any to any
то все работает.
Я совсем запутался.

Re: [NFS] разрешаем nfs на ipfw

Добавлено: 2008-12-15 10:07:38
zingel

Re: [NFS] разрешаем nfs на ipfw

Добавлено: 2008-12-17 13:08:25
hodok
Когда столкнулся с проблемой nfs на ipfw то для тестирования написал вот такие правила:

Код: Выделить всё

${FwCMD} add 301 allow udp from any to any 2049 via ${LanOut}
${FwCMD} add 302 allow tcp from any to any 2049 via ${LanOut}
${FwCMD} add 303 allow udp from any to any 3333 via ${LanOut}
${FwCMD} add 304 allow tcp from any to any 3333 via ${LanOut}
${FwCMD} add 305 allow udp from any to any 111 via ${LanOut}
${FwCMD} add 306 allow tcp from any to any 111 via ${LanOut}
${FwCMD} add 307 allow udp from any to any 747 via ${LanOut}
${FwCMD} add 308 allow tcp from any to any 745 via ${LanOut}
Машина имеет один интерфейс, запуск nfs сервера прописан в rc.conf:

Код: Выделить всё

portmap_enable="YES"
rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -n 4"
#nfs_reserved_port_only="YES"
mountd_flags="-r -p 3333"
По результатам ipfw show оставил только следующие:

Код: Выделить всё

${FwCMD} add 301 allow udp from any to any 2049 via ${LanOut}
${FwCMD} add 303 allow udp from any to any 3333 via ${LanOut}
${FwCMD} add 304 allow tcp from any to any 3333 via ${LanOut}
${FwCMD} add 305 allow udp from any to any 111 via ${LanOut}
по остальным портам ничего не ходит.
Может это конечно не безопасно, но все находится в стадии тестирования. Пытаюсь найти оптимальный вариант.

[NFS] разрешаем nfs на ipfw

Добавлено: 2022-05-06 11:46:05
Fluoresziert
И вот спустя много лет, наконец-то правильный ответ: nfs сервер использует UDP порт 111 для ответа. Соответственно клиенту в правилах файиервола необходимо разрешить это входящее соединение. Конкретно для ipfw это выглядит так:

ipfw -q add 10000 allow udp from any 111 to me in via ${wanif}
разрешить все входячие UDP с любых IP, с порта 111, на все мои порты, на всех IP интерфейсах, которые висят на железяке/vlan'е ${wanif}

Соответственно клиенту должны быть разрешены исходящие соединения

ipfw -q add 9999 allow ip from ${wanip} to any out via ${wanif}
разрешить все исходящие протоколы, с моего конкретного IP интерфейса ${wanip} который висит на железяке/vlan ${wanif}, на любые IP, любые порты

После этого клиент сможет примонтировать NFS шару.