저는 라이브 스트리밍을 위해 CentOS 8을 사용하고 있습니다. 내 IP는 2001:570:1:b86::12이고 다음을 실행했습니다.
ip -6 route add local 2001:570:1:b86::/64 dev lo
그 중 하나를 빌드하고 실행합니다.이것들, 이제 내 서버의 모든 18,446,744,073,709,551,615 IP 주소에 (로컬로) 연결할 수 있으며 모든 것이 잘 작동합니다. 또한 원격 시스템에서 기존 2001:570:1:b86::12에 연결할 수 있으며 인터넷에서는 잘 작동합니다.
그런데 원격으로 다른 IP로는 접속이 안되네요...
$ ping6 -c 1 2001:570:1:b86:1234:2345:3456:6789
PING6(56=40+8+8 bytes) 2001:8000:1ced:6d00:f507:cb71:703f:afe1 --> 2001:570:1:b86:1234:2345:3456:6789
--- 2001:570:1:b86:1234:2345:3456:6789 ping6 statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
이걸 보니 내 상자가 ARP에 응답하지 않는 것 같나요?
# tcpdump -i eno1 -n -nn -vvv -XX proto 58
dropped privs to tcpdump
tcpdump: listening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes
00:11:47.354817 IP6 (class 0xc0, hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::629c:9fff:fe86:c00 > ff02::1:ff56:6789: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2001:570:1:b86:1234:2345:3456:6789
source link-address option (1), length 8 (1): 60:9c:9f:86:0c:00
0x0000: 609c 9f86 0c00
0x0000: 3333 ff56 6789 609c 9f86 0c00 86dd 6c00 33.Vg.`.......l.
0x0010: 0000 0020 3aff fe80 0000 0000 0000 629c ....:.........b.
0x0020: 9fff fe86 0c00 ff02 0000 0000 0000 0000 ................
0x0030: 0001 ff56 6789 8700 f8a7 0000 0000 2001 ...Vg...........
0x0040: 0570 0001 0b86 1234 2345 3456 6789 0101 .p.....4#E4Vg...
0x0050: 609c 9f86 0c00 `.....
00:11:48.389831 IP6 (class 0xc0, hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::629c:9fff:fe86:c00 > ff02::1:ff56:6789: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2001:570:1:b86:1234:2345:3456:6789
source link-address option (1), length 8 (1): 60:9c:9f:86:0c:00
0x0000: 609c 9f86 0c00
0x0000: 3333 ff56 6789 609c 9f86 0c00 86dd 6c00 33.Vg.`.......l.
0x0010: 0000 0020 3aff fe80 0000 0000 0000 629c ....:.........b.
0x0020: 9fff fe86 0c00 ff02 0000 0000 0000 0000 ................
0x0030: 0001 ff56 6789 8700 f8a7 0000 0000 2001 ...Vg...........
0x0040: 0570 0001 0b86 1234 2345 3456 6789 0101 .p.....4#E4Vg...
0x0050: 609c 9f86 0c00 `.....
00:11:49.386308 IP6 (class 0xc0, hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::629c:9fff:fe86:c00 > ff02::1:ff56:6789: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2001:570:1:b86:1234:2345:3456:6789
source link-address option (1), length 8 (1): 60:9c:9f:86:0c:00
0x0000: 609c 9f86 0c00
0x0000: 3333 ff56 6789 609c 9f86 0c00 86dd 6c00 33.Vg.`.......l.
0x0010: 0000 0020 3aff fe80 0000 0000 0000 629c ....:.........b.
0x0020: 9fff fe86 0c00 ff02 0000 0000 0000 0000 ................
0x0030: 0001 ff56 6789 8700 f8a7 0000 0000 2001 ...Vg...........
0x0040: 0570 0001 0b86 1234 2345 3456 6789 0101 .p.....4#E4Vg...
0x0050: 609c 9f86 0c00 `.....
내 상자가 이러한 패킷을 허용하는 상자임을 라우터에 지시하도록 커널에 어떻게 지시합니까?
이것이 tproxy와 관련이 있다면 나는 이것을 가지고 있습니다(그러나 방화벽에서 이러한 ARP가 제대로 작동하도록 하는 방법을 모릅니다).
# lsmod | grep tproxy
nf_tproxy_ipv6 16384 0
제안?
답변1
OP의 방법은Linux 2.6.37부터 가능이지만 추가 설정이 필요합니다.
ARP와 동등한 IPv6은 다음과 같습니다.새로운 민주당(ARP의 브로드캐스트/유니캐스트 독점 L2 프로토콜이 아닌 ICMPv6 멀티캐스트/유니캐스트를 사용합니다).
proxy_ndp
여기서의 동작은 프록시 ARP와 정확히 동일하지 않으며(여전히 IP별 설정이 필요하지만 여기서는 필요하지 않음) 도움이 되지 않습니다. 대신에 전용 데몬인ndppd
일반적으로 다른 시스템을 대신하여 응답된 NDP 요청을 수신하면 이 상황을 관리할 수 있습니다. 다른 시스템이 없으므로 응답하기 전에 백엔드 시스템에 쿼리를 시도하지 않도록 설정해야 합니다.
여기서는 다음과 같이 가정합니다.
- 메인 인터페이스는 다음과 같습니다.
eth0
- 시스템은 이 /64에서 분리되어 있습니다(예외가능한해당 라우터의 선택적 전역 주소).
- 시스템을 라우터로 설정하면 안 됩니다. 작은 경고를 참조하세요.
EPEL(패키지 epel-release
)을 활성화하고 설치한 ndppd
후 다음과 유사한 구성을 사용합니다 /etc/ndppd.conf
.
proxy eth0 {
router no
rule 2001:570:1:b86::/64 {
static
}
}
static
백엔드 시스템에 쿼리하지 않고 데몬이 즉시 응답하도록 합니다. 이 경우 모든 주소가 호스트에 속하기 때문에(또는 더 정확하게는 모든 쿼리가 도달해야 하기 때문에) 필요합니다.
지침:
ndppd
넷마스크가 너무 크기 때문에 시작 시 경고가 생성됩니다.이는 시스템 라우터가 2001:570:1:b86::12 또는 (더 나은 경우)
eth0
시스템 인터페이스의 링크 로컬 주소를 통해 이 /64 블록을 라우팅하도록 명시적으로 설정되지 않은 경우 중요합니다.라우터를 적절하게 설정하지 않고 블록에서 원격 네트워크 스캔을 수행하는 경우 라우터는 /64 스캔에 표시된 각 새 주소에 대해 NDP 항목을 할당합니다. 오래된 항목을 신속하게 제거할 만큼 견고하게 설계되지 않은 소형(홈) 라우터는 이를 잘 처리하지 못하고 메모리 부족/높은 CPU 사용량으로 어려움을 겪을 수 있습니다(예:서비스 거부).
실제 호스트의 IPv6 주소는 /64에 있으므로 해당 주소를 쿼리하면 커널과
ndppd
. 이런 경우에는router yes
생각해 보세요.ndppd
구성에는 라우팅 테이블에서처럼 해당 서브넷을 포함하는 대규모 네트워크를 포괄하는 서브넷이 없는 것 같습니다.