이더넷 케이블을 통한 직접 연결

이더넷 케이블을 통한 직접 연결

이것은 실용적인 목적보다는 "연구"를 위한 것입니다. 아래 내 추측은 그렇지 않기 때문에 이것이 어떻게 작동하는지 알고 싶습니다. 즉, /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올바른 것으로 보입니다(아래 참조). John의 의견에 따르면 경로를 추가하지 않고 이 경우 핑 시간이 초과되었습니다.

두 시스템의 iptables는 열려 있으며 INPUT, OUTPUT 및 FORWARD는 규칙 없이 모두 허용됩니다.

그러나 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의 답변을 확인하세요.

관련 정보