solaris 10 在特定接口上添加路由

solaris 10 在特定接口上添加路由

我在 Solaris 盒子上有 2 个接口

# 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

知道如何解决吗?

答案1

似乎所有答复只适用于 Linux 平台。

但是在 Solaris 10 上,我发现以下命令可以工作:

route -p <add/delete> <hostname> <gateway> -ifp <interface>

答案2

l1x 的解决方案是正确的,但它存在一些问题;一侧的其他主机hme0无法访问192.168.1.32,并且192.168.1.32可能无法访问其他主机。

如果这是个问题,那是因为你的网络掩码显示192.168.1.*连接到两个都网络,但事实并非如此。也许您想在没有子网的情况下执行此操作,并将掩码设置为255.255.255.255允许您创建路由没有-interface

也许您可以使用192.168.2.*一侧,并路由另一侧,尽管您需要访问权限才能在路由器上创建路由,或者重新配置192.168.1.*网络上的所有机器以了解此路由。

如果这两件事你都做不到,你也许可以创建一座桥梁。

如果你不介意修补你的内核并加载 alpha 质量的驱动程序,你可以制作一个以太网桥(另见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

答案3

这将是 Solaris 10 上的命令:

route add 192.168.1.32 192.168.1.42 -interface

您不需要在参数 -interface 后添加接口名称,因为 IP 地址 192.168.1.42 已经隐含地表示使用 hme1。

问候,

答案4

试试这个:route add-net 192.168.1.0-netmask 255.255.255.0-interface 192.168.1.42

相关内容