이것은 실용적인 목적보다는 "연구"를 위한 것입니다. 아래 내 추측은 그렇지 않기 때문에 이것이 어떻게 작동하는지 알고 싶습니다. 즉, /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의 답변을 확인하세요.