Я пробую свои первые попытки маршрутизации и получаю сообщение «Сеть недоступна».
Моя цель - успешно проверить связь с одной машины (подсеть 10.56.34.0) на машину в совершенно другой сети (10.1.201.0), даже если мой шлюз подсети 10.56.34.0 не может туда попасть.
Вот что у меня есть.
В своих первых неуклюжих попытках я попытался настроить маршрут непосредственно из коробки Linux 10.56.34.209 в сеть 10.1.201.0, используя шлюз 10.53.35.253. Именно тогда я впервые попал в сообщение «Сеть недоступна». Тем временем я узнал, что вы не можете использовать шлюз в другой подсети. (подсеть .34 не может использовать шлюз .35). Я попытался добавить шлюз по умолчанию, используя шлюз 10.56.35.253, и получил то же сообщение «Сеть недоступна».
Ладно. Итак, как я могу заставить свой Linux-бокс в подсети .34 отправлять определенный трафик (трафик в подсеть 10.1.201.0) через шлюз 10.56.35.253?
Если ваша маска подсети 255.255.255.0, вам не нужно ничего делать. Ваш шлюз по умолчанию (10.56.34.1) должен знать способ пересылки пакетов на хост назначения. Вы получаете недоступность, когда устанавливаете 10.56.35.253 в качестве шлюза, потому что ваш компьютер не подключен к сети 10.56.35.0, поэтому ваш стек TCP / IP не может достичь шлюза через связь уровня 2.
Может быть, есть какие-то брандмауэры / списки доступа, которые не позволяют вашей машине добраться до места назначения?
Оставьте шлюз по умолчанию на 10.56.34.1, попробуйте пинговать 10.1.201.157 при запуске в другом окне tcpdump -n icmp
. Есть ли у вас недоступность сети icmp или что-то вроде фильтра icmp 3/13, запрещенного администратором? Если вы попытаетесь проследить маршрут до пункта назначения, что вы получите?
Да, вы можете это сделать, но это зависит от вашей операционной системы.
В Windows это наиболее проблематично.
В Windows Server 2012 R2 и Windows 8.1 есть командлеты powershell для включения прямого доступа за пределами подсети, Get-NetOffloadGlobalSetting показывает текущее состояние, а Set-NetOffloadGlobalSetting -NetworkDirectAcrossIPSubnets позволяет настроить значение.
Хотя PowerShell понимает синтаксис «NetworkDirectAcrossIPSubnets» в клиентских операционных системах, эта функция доступна только для серверов, ее установка в клиентской ОС приведет к ошибке.
Если у вас есть сервер с виртуальными машинами Windows, которым требуется доступ к шлюзу за пределами их собственной подсети, и вы не можете использовать NetworkDirectAcrossIPSubnets - вы можете установить другую виртуальную машину с маршрутизатором, работающим под unix-подобной ОС, например pfSense - он может иметь несколько адресов вне подсети, при условии, что хотя бы один адрес находится в той же подсети, что и шлюз, и он может выполнять NAT 1: 1 для ваших виртуальных машин Windows.
Это связано с используемой маской подсети.
Вы знаете, обычно это 255.255.255.0. Измените это на 255.255.255.192. Теперь ваша машина будет думать, что все три диапазона IP-адресов являются частью одной подсети, а не трех подсетей. Затем вы сможете выбрать шлюз, который работает для всего, к чему вы подключены.
Вы также можете проверить маршрутизатор на наличие VLAN. Возможно, вы не подключены к нужному порту.