기본 인터페이스 (eth0)에서 IPv6를 통해 가상 탭 네트워크 인터페이스를 ping 할 수 없습니다.

uMdRupert

ipv6를 통해 가상 탭 장치 와 통신하는 데 문제가 있습니다. 본질적으로 ping6 -I eth0 <tap interface link-local ipv6 address>아무것도 반환하지 않습니다. 탭의 호스트 쪽 끝점을 ping 할 수도 없습니다.

[user ~]$ ping6 -I eth0 fe80::88a2:f6ff:fe6f:90cb
PING fe80::88a2:f6ff:fe6f:90cb(fe80::88a2:f6ff:fe6f:90cb) from fe80::4f3:9ff:fec9:2032%eth0 eth0: 56 data bytes
^C
--- fe80::88a2:f6ff:fe6f:90cb ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7162ms

그리고 eth0의 tcpdump 출력 :

20:54:00.658849 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 1
20:54:01.673920 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 2
20:54:02.698029 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 3
20:54:03.722004 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 4
20:54:04.745974 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 5

그리고 예상대로 탭 장치 인터페이스의 tcpdump가 비어 있습니다. 나는 자체에서 eth0를 ping 할 수 있습니다. eth0오류가있는 탭 인터페이스에서 할 수 없습니다 connect: Network is unreachable. 그러나 이것은 tcpdump가 핑이 처음에 탭 장치에 도달하지 않는다는 것을 나타 내기 때문에 별도의 문제라고 생각합니다.

내 네트워크 설정은 다음과 같습니다.

[user ~]$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 172.30.255.7  netmask 255.255.255.240  broadcast 172.30.255.15
        inet6 2600:1f14:XXXX:XXXX:e134:ff0c:cccd:b262  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::4f3:9ff:fec9:2032  prefixlen 64  scopeid 0x20<link>
        ether 06:f3:09:c9:20:32  txqueuelen 1000  (Ethernet)


[user ~]$ ifconfig tp-0ge-0000gf-0
tp-0ge-0000gf-0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 169.254.18.114  netmask 255.255.255.252  broadcast 0.0.0.0
        inet6 fe80::88a2:f6ff:fe6f:90cb  prefixlen 64  scopeid 0x20<link>
        ether 8a:a2:f6:6f:90:cb  txqueuelen 1000  (Ethernet)

및 현재 경로 :

[user ~]$ ip -6 r s
    2600:1f14:XXXX:XXXX:XXXX:ff0c:cccd:b262 dev eth0 proto kernel metric 256 expires 439sec pref medium
    fe80::4f3:9ff:fec9:2032 dev eth0 metric 1024 pref medium
    fe80::88a2:f6ff:fe6f:90cb dev tp-0ge-0000gf-0 metric 1024 pref medium
    default via fe80::460:a1ff:fec3:9cb6 dev eth0 metric 1024 pref medium

ip6tables 필터 테이블은 모든 것을 통과시킵니다.

[user ~]$ sudo ip6tables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

나는 한 net.ipv6.conf.[inteface].forwarding탭과 eth0를 모두 사용 가능하고, 명확하게 IPv6를 사용할 수 있습니다. 다른 중요한 커널 매개 변수가 떠오르면 여기에 추가하겠습니다.

이것은 Amazon Linux 2에 있습니다 cat /etc/os-release.

NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"

포함해야 할 다른 정보가 있으면 알려주세요. 어떤 제안이라도 대단히 감사합니다.

AB

서론으로 ifconfigIPv6를 거의 다룰 수 없더라도를 사용하지 않는 데 익숙해 져야 합니다. 사용하는 것과 같은 방식으로 ip -6 route show항상 ip address show(및 ip link show)를 사용하십시오. ifconfig더 이상 사용되지 않는 커널 API를 사용하기 때문에 현재 사용되지 않는 명령 의 제한 (Linux)으로 인한 문제를 피할 수 있습니다 .

정보가 필요한 세 가지 지점을 볼 수 있습니다.

  1. IPv6 링크-로컬 주소에는 인터페이스도 완전한 주소 여야합니다.

    IPv6 인터페이스에 연결된 각 네트워크에서 동일한 링크-로컬 주소가 존재할 수 있으므로 완전한 링크 계층 주소를 갖도록 주소의 인터페이스를 지정해야합니다. RFC 4007에 지정되어 있습니다 .

    이러한 문자열에 대한 한 가지 가능한 후보는 인터페이스가 모든 범위를 고유하게 명확하게하기 때문에 인터페이스 이름입니다.

    시스템의 경우 다음은 완전히 지정된 링크 로컬 주소입니다.

    fe80::4f3:9ff:fec9:2032%eth0
    fe80::88a2:f6ff:fe6f:90cb%tp-0ge-0000gf-0
    
  2. 로컬 주소는 호스트에 속합니다.

    따라서 lo그러한 경로가 허용되는 경우 그들 사이 (루프백) 인터페이스를 통해 라우팅됩니다 . 시도하지 마십시오 ping -I eth0. 패킷 eth0을 수신 할 것이없는 곳을 통해 유선으로 전송되도록 강제 합니다. 그래서 ping작동 할 것입니다 :

    ping fe80::88a2:f6ff:fe6f:90cb%tp-0ge-0000gf-0
    

    기본적으로 시스템은 동일한 소스를 선택합니다. 인터페이스에 연결된 로컬 링크-로컬 주소 하나에서 다른 인터페이스에 연결된 다른 주소로 ping하는 것이 허용되지 않을 수 있습니다. 동일한 인터페이스의 두 번째 로컬도 괜찮습니다). 따라서 이것은 실패합니다.

    ping -I fe80::4f3:9ff:fec9:2032%eth0 fe80::88a2:f6ff:fe6f:90cb%tp-0ge-0000gf-0
    

    그러나 이것은 작동합니다.

    ping -I 2600:1f14:XXXX:XXXX:e134:ff0c:cccd:b262 fe80::88a2:f6ff:fe6f:90cb%tp-0ge-0000gf-0
    

    이것은 당신의 TAP 인터페이스가 작동하고 있다는 것을 알려주지 않습니다 : 당신은 자체적으로 로컬 시스템을 핑하고 TAP 인터페이스를 전혀 사용하지 않습니다.

  3. TUN / TAP 인터페이스의 중요한 부분은 표시되는 로컬 주소가 아닙니다.

    TUN / TAP 인터페이스에서 중요한 것은 이 인터페이스 뒤에 연결된 실행 프로세스입니다. 이 인터페이스는 프레임 또는 패킷을 수신하고이를 처리 (또는 터널링)해야합니다. 자습서에서는 6 단계에서 실행되는 프로세스입니다.

    STEP#6 KVM qemu command to startup Guest using tap0 device
    

    이 옵션을 사용합니다 : 이전에 설정된 인터페이스 -net tap,script=no,ifname=tap0,vlan=0에 연결합니다 tap0. 이것이 TUN / TAP 인터페이스의 요점입니다 : 시스템의 네트워크를 프로세스에 연결하는 것입니다.

    인터페이스 tp-0ge-0000gf-0가 링크 로컬 주소를 자동으로 할당 했기 때문에에 연결된 실행중인 프로세스가 있거나 있었음을 의미합니다 tp-0ge-0000gf-0. 사용 중이 ip link show tp-0ge-0000gf-0거나 ( process not attachment ) 대신 ( 여기서는 process 첨부로 번역됨) ip address show tp-0ge-0000gf-0의 존재로이를 확인할 수 있습니다. 그러한 정보를 표시하지 않습니다. 이러한 프로세스는 예를 들어 또는 QEMU 일 수 있습니다 . (tun 또는 tap 터널 모드가있는) 같은 릴레이 / 터널링 응용 프로그램 또는 도구 에도 연결할 수있는 옵션이 있습니다 (예 : 릴레이를 위한 경우에만 해당 : 내장 네트워크 스택을 포함하지 않음).LOWER_UPNO-CARRIERifconfigopenvpnsshsocatsocat

    IPv6를 처리 (또는 터널링)하도록 구성된 경우에는 (보이지 않는)쪽에 링크 로컬 주소와 전역 주소를 할당합니다.

    인터페이스를 지정하면서 링크 로컬 모든 노드 주소 대상 을 ping하여 원격 링크 로컬 IPv6 주소를 검색 할 수 있어야합니다 .

    ping ff02::1%tp-0ge-0000gf-0
    

    거기에서 라우터를 검색하려면 링크 로컬 모든 라우터 주소를 ping 할 수 있습니다.

    ping ff02::2%tp-0ge-0000gf-0
    

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관