У меня 2 интерфейса на коробке Solaris
# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 192.168.1.41 netmask ffffff00 broadcast 192.168.1.255
ether x:x:x:x:x:x
hme1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
inet 192.168.1.42 netmask ffffff00 broadcast 192.168.1.255
ether x:x:x:x:x:x
# netstat -rn
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ------ ---------
192.168.1.0 192.168.1.41 U 1 91 hme0
192.168.1.0 192.168.1.42 U 1 0 hme1
224.0.0.0 192.168.1.41 U 1 0 hme0
default 192.168.1.1 UG 1 91
127.0.0.1 127.0.0.1 UH 1 0 lo0
hme0 интерфейс по умолчанию, но я хочу указать хост 192.168.1.32 для использования интерфейса hme1. я пытаюсь использовать
route add 192.168.1.32 192.168.1.42 -interface hme1
но вернуться
hme1: bad value
есть идеи, как я могу это решить?
Кажется, все ответы применимы только на платформе Linux.
Однако в Solaris 10 команда, которую я обнаружил, работает:
route -p <add/delete> <hostname> <gateway> -ifp <interface>
Решение l1x правильное, но есть некоторые проблемы; другие хосты на hme0
сторона не может добраться 192.168.1.32
, и 192.168.1.32
возможно, не удастся связаться с другими хостами.
Если это проблема, то это потому, что ваши маски сети говорят, что 192.168.1.*
связан с обе сетей, что не соответствует действительности. Возможно, вы хотите сделать это без подсетей и установить маску на 255.255.255.255
что позволит вам создавать маршруты без то -interface
линия.
Возможно, вы можете использовать 192.168.2.*
для одной стороны и маршрутизировать другую, хотя вам понадобится доступ, чтобы создать маршрут на маршрутизаторе или перенастроить все машины на вашем 192.168.1.*
сеть, чтобы узнать об этом маршруте.
Если вы не можете сделать ни одно из этих действий, возможно, вы сможете создать мост.
Если вы не боитесь исправлять ядро и загружать драйверы с альфа-качеством, вы можете сделать Мост Ethernet (также см RBridge).
Если решения только для IP-адреса будет достаточно, вы можете использовать arp-прокси и пересылку IP-адресов, чтобы создать простой мост только для IP. Начните примерно так:
arp -s 192.168.1.32 macaddress-of-hme0 pub
route add 192.168.1.32 secretip
ndd -set /dev/ip ip_forawrding 1
В Solaris proxy_arp действительно не работает. Единственный надежный способ сделать это - дать машине 192.168.1.32 дополнительный секретный IP-адрес, например 10.5.3.2, что вы только используйте для этого.
,-----, hme1,-----, hme0
|hostA|-------------|hostB |----------- ?
`-----' `-----'
192.168.1.32 192.168.1.41
10.5.3.2 192.168.1.42
10.5.3.1
Хотя в этой конфигурации "hostB" не требует обоих 192.168.1.41
и 192.168.1.42
.
Это будет команда в Solaris 10:
route add 192.168.1.32 192.168.1.42 -interface
Вам не нужно добавлять имя интерфейса после аргумента -interface, потому что IP-адрес 192.168.1.42 уже неявно говорит об использовании hme1.
С Уважением,
Синтаксис маршрута Solaris следующий:
route [-fn] add | delete | get [net|host|default] [destination] [gateway]
Итак, ваша команда выглядит так:
route add 192.168.1.32 -interface hme1
Попробуйте это: route add -net 192.168.1.0 -netmask 255.255.255.0 -interface 192.168.1.42