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

добавление маршрута Solaris 10 в конкретный интерфейс

У меня 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