通过以太网电缆直接连接

通过以太网电缆直接连接

这是为了“研究”而不是务实的目的——我想知道这是如何工作的,因为我下面的猜测不是。换句话说,我不想要一个涉及/etc/network/interfaces或任何其他特定于发行版或 NetworkManager 的答案。

请不要将其作为提供此类答案的问题的重复项而关闭。

我正在尝试使用常规(非交叉)以太网电缆连接两个 GNU/Linux 系统。有传言说,现在这应该不成问题了。

我试图做的是为两台机器上的接口添加一个私有IP:

ip addr add 10.0.0.1 dev eth0

10.0.0.2另一台机器上。两者都没有连接到可以通过这种方式识别的网络。

然后我添加了来回路线:

ip route add 10.0.0.2 via 10.0.0.1

反之亦然。随后,ip addr和的输出ip route似乎是正确的(见下文)。根据约翰的评论,我也尝试过这个而不添加任何路线;在这种情况下,ping 就会超时。

两台机器的 iptables 都是开放的; INPUT、OUTPUT 和 FORWARD 都是 ACCEPT,没有任何规则。

但当我尝试 ping 时会发生以下情况:

> ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable

请注意,返回此值的是本地接口 (10.0.0.1)。

这里需要什么额外的步骤和/或我哪里出错了?


使用后的路由表ip route ...如下所示:

default via 192.168.0.1 dev wlan0 
10.0.0.2 via 10.0.0.1 dev eth0 
192.168.0.0/24 dev wlan0  proto kernel  scope link  src 192.168.0.19 

Sans ip route ...,看起来一样,但没有第 2 行。


ethtool 的输出(两个网卡都是相同的硬件)如下所示:

ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                             100baseT/Half 100baseT/Full 
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbag
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

ip a以太网 NIC 的输出如下所示:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:f5:4f:7a brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.2/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba27:ebff:fef5:4f7a/64 scope link 
       valid_lft forever preferred_lft forever

答案1

正如注释中所写,您需要修复路由表。

该语法ip route add X via Y用于网关流量,即流量是否X应发送到(大多数情况下是外部地址)Y。需要有一条额外的路线才能Y 到达。如果Y是您自己的接口地址并且您不解决问题,否则就会创建环路并且路由不起作用。

您需要的是直接通过接口(而不是通过网关)发送到其他主机的流量。有许多不同的可能性,具体取决于您使用的网络掩码:

ip r add 10.0.0.2/32 dev eth0    # only 10.0.0.2 should go via eth0
...
ip r add 10.0.0.0/8 dev eth0     # 10.0.0.0 - 10.255.255.255 should go via eth0

答案2

这里的问题是默认情况下:

ip addr add 10.0.0.1 dev eth0

设置子网掩码为/32,这意味着子网上不能有任何其他节点,并且尝试在那里设置路由via毫无意义。

使用明确的、更理智的掩码:

ip addr add 10.0.0.1/24 dev eth0

解决问题;交替查看jofel的回答。

相关内容