我有一台2以太网适配器的Linux计算机。我也有2 ADSL模型和2互联网连接。我把调制解调器A连接到以太网端口A,调制解调器B连接到以太网端口B。
现在,如何执行以下操作(最好是在C++中):
( a) 获取每个适配器的IP
( b) 选择使用下载的连接(我想说:用连接A下载这个文件,用B下载这个文件)
IP为动态。我这样做,因为我的IP必须知道远程服务器。
服务器必须:
( a) 获得IP
( b) 向此IP发送文件
这个想法是,每次我的IP改变,我将发送新的IP到服务器,所以服务器将知道在哪里发送文件。
我使用两个互联网连接:
( a) 冗余的原因(如果一个互联网连接中断,我得到第二个)
这或多或少是将流量从一个以太网接口转发到另一个以太网接口的复兴。
假设下面的设置。
. 15.15.1.11 15.15.1.12
. A:eth0 --- eth0:B:xxx0 --- xxx0:C
. 15.15.0.10 15.15.0.11
其中A、B和C是独立的节点,而xxx0是一些非以太网网络接口.
在每个节点上分配下列地址和路由:
A
ip addr add 15.15.0.10 dev eth0
ip route add 15.15.0.0/16 dev eth0
B
ip addr add 15.15.0.11 dev eth0
i
我有一个bash脚本,可以在各种不同的Ubuntu Linux机器上运行。它的工作是找出本地主机的局域网IPv4地址。
该脚本正在使用
ip addr show eth0 | sed -n '/inet /{s/^.*inet \([0-9.]\+\).*$/\1/;p}'
这很好,但是由于某些原因,一些机器使用eth1而不是eth0。我希望能够发现局域网接口名称,因此我可以在这里替代它,而不是eth0。
当然,如果你能想出一个不同的oneliner来做同样的事情,那么一切都很好。
我遇到了一个Linux系统,其中一些通过以太网接口的路由是在没有指定网关的情况下配置的。我一直认为,指定接口而不是网关的路由仅用于点对点链接。对于以太网接口来说,这是没有意义的,因为以太网不是点对点介质。
当数据包通过没有指定网关的以太网接口与路由匹配时,Linux如何传送数据包?它是否从接口广播对目标IP地址的ARP请求?(而未指定的网关必须充当ARP代理?)在基于策略的路由具有多个路由表的情况下,行为是否不同?(下面的第二个例子)
下面是这样一条路线的一个例子:
[Gaia]# ip route list
10.25.35.0/24 dev eth3 proto routed
...