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

Передача трафика Linux NFS через Windows Server 2008

Мы разрабатываем встроенное устройство, которое работает в Linux и использует монтирование NFS для помощи в разработке. Мы работаем в двух частных сетевых пространствах (172.16.x.y и 192.168.0.n). В 192 сеть содержит 40Mb/s многоадресный трафик, который нужен устройству, но чтобы не загромождать 172 сеть сетевой трафик генерируется Windows 2008 R2 Server. В коробке Windows Server 2008 есть 2 сетевых адаптера - одна для 192 (генерируется DHCP-сервером на нем) и один для 172 сеть (шлюз по умолчанию в окне Windows указывает на 172 шлюз)

В нашей среде разработки у нас есть следующие связи:

Device 172.16.50.100 (static)]----[Gateway (172.16.15.200)]----[Ubuntu Linux Server 172.16.10.100]

Устройство может монтировать и выполнять код на 172.16.10.100 сервер.

Однако, когда мы перемещаем устройство в сеть Windows Server:

Device 192.168.0.2(dhcp)]---[Server 2008 (192.16.0.1)(dhcp server) NIC2(172.16.50.200)]---[Ubuntu Linux Server 172.16.10.100]

Теперь устройство не может монтировать каталоги NFS:

\$ mount -t nfs 172.16.10.100:<path> hd
mount: 172.16.10.100:<path> failed, reason given by server: Permission denied
mount: mounting 172.16.10.100:<path> on hd failed: Bad file descriptor

Мы можем пинговать сервер:

\$ ping -c 1 172.16.10.100
PING 172.16.10.100 (172.16.10.100): 56 data bytes
64 bytes from 172.16.10.100: seq=0 ttl=64 time=1.231 ms

--- 172.16.10.100 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 1.231/1.231/1.231 ms

Следовательно, устройство может нормально видеть сервер Ubuntu, когда он находится на 192 сеть, но не может смонтировать NFS.

Мы также отключили брандмауэр Windows Server 2008.

Как заставить данные NFS проходить через сервер?

Спасибо.

@tigran - спасибо за помощь. Вы подняли несколько очень важных моментов.

Проблема здесь была на самом деле в номерах портов.

В первом сценарии:

Device 172.16.50.100 (static)]----[Gateway (172.16.15.200)]----[Ubuntu Linux Server 172.16.10.100]

Устройство запрашивало:

authenticated mount request from 172.16.50.100:709
                                               ^^^

Однако во втором сценарии:

Device 192.168.0.2(dhcp)]---[Server 2008 (192.16.0.1)(dhcp server) NIC2(172.16.50.200)]---[Ubuntu Linux Server 172.16.10.100]

Windows Server менял номер порта:

refused mount request from 172.16.50.217 for <path> (/home): illegal port 62441
                                                                          ^^^^^

В соответствии с Справочные страницы Man для файла экспорта:

secure
This option requires that requests originate on an Internet port less 
than IPPORT_RESERVED (1024). This option is on by default. To turn it
off, specify insecure.
     ^^^^^^^^^^^^^^^^

Увидев, что это закрытая частная сеть, мы обновили /etc/exports файл иметь:

/home *(rw,no_root_squash,async,no_subtree_check,insecure)
                                                 ^^^^^^^^

Для справки, строки отладки взяты из /var/log/syslog после изменения /etc/default/nfs-kernel-server файл для включения:

RPCMOUNTDOPTS="--manage-gids --debug all"