У меня есть следующий сценарий:
Компьютер A:, 198.51.100.8
маска сети 255.255.255.0
Компьютер B:, 203.0.113.9
маска сети 255.255.255.0
Оба компьютера находятся в одном сегменте локальной сети; в обоих случаях шлюз по умолчанию не указан.
Чтобы эти два компьютера могли общаться друг с другом, я добавил два статических маршрута, например:
route add 203.0.113.9 mask 255.255.255.255 198.51.100.8
Однако я бы предпочел добавить статические маршруты, указав сетевой интерфейс , а не указав IP-адрес шлюза .
Это возможно в Linux с помощью такой команды:
ip route add 203.0.113.9 dev eth0
и аналогично во FreeBSD:
route add 203.0.113.9/32 -iface fxp0 -cloning
Тем не менее, я в растерянности, как это сделать с Windows. В идеале я хочу сделать что-то вроде:
route add 203.0.113.9 mask 255.255.255.255 if 2
но это просто распечатывает использование для route
команды, которая говорит мне, что я делаю это неправильно. Я также пытался использовать netsh
, что говорит мне:
> netsh routing ip add persistentroute 203.0.113.9 255.255.255.255 "Local Area Connection"
Specify the next-hop for non point-to-point interfaces.
Есть мысли или предложения?
Обновление : когда я первоначально отправил этот вопрос, я использовал Windows XP. Но я не упомянул об этом.
Я оставлю оригинальный ответ Гризли, так как он правильный для моего первоначального вопроса. Но если вы используете более новую версию Windows, чем XP / 2003, попробуйте один из других ответов.
источник
В окнах вы можете добавить маршрут на основе интерфейса, не зная интерфейс, передавая в
0.0.0.0
качестве шлюзаэто дает что-то вроде этого:
источник
route ADD 176.31.111.111 0.0.0.0 IF 25
она вернуласьOK!
и новая запись появилась в таблице маршрутизации, как и ожидалосьЯ получил то же самое в Windows 7 Enterprise с клиентом Juniper Pulse VPN.
У меня была проблема с этим, так как он захватил все возможные адреса IPv4 и направил их на модемное соединение:
Я не хотел, чтобы весь мой трафик проходил через VPN, поэтому на случай, если это кому-нибудь понадобится, я написал небольшой cmd-файл, чтобы удалить эти маршруты, а затем установил единственный, который мне нужен (10.0.0.0), не имея возможности указать шлюз , указав правильный интерфейс.
Вы можете использовать это для динамического получения номера интерфейса.
источник
Номер интерфейса в десятичном виде отображается с помощью
route print
. Посмотрите на верхнюю часть вывода нижеInterface List
.Другой способ - использовать
arp -a
и записывать шестнадцатеричное число, например:Оба принимаются после
if
аргументаroute.exe
, например:Я предпочитаю
arp -a
, так как проще определить NIC.Множество других способов, но это самый простой.
источник
Вы не можете опустить шлюз в постоянной таблице. Некоторые люди предлагают поместить туда IP-интерфейс интерфейсной карты, что было приемлемо в Windows XP. Но это уже не действительно. В этом случае ОС будет сбивать каждый сетевой интерфейс, по крайней мере, до заполнения кеша; это не хорошее поведение и не имеет значения с пустой таблицей маршрутизации.
Я обнаружил, что размещение IP-адреса назначения в качестве шлюза решает проблему, по крайней мере, в Windows 10. Но у меня пока мало статистики, чтобы подтвердить его как 100,1% -ную правду.
источник