나는 직접 연결된 네트워크(eth0이 구성된 /64에서)의 호스팅 공급자가 할당한 주소에서 인터넷의 (가상) 서버에 여러 개의 IPv6 주소를 가질 수 있습니다. 이 IPv6 주소를 VPN(wireguard)에 사용하여 이 서버에 연결하는 경우 어떻게 사용해야 합니까?
일반적으로 내 서버를 가리키는 VPN 내부에 사용되는 IPv6 주소에 대한 경로가 있어야 하는데 그러한 경로 항목이 없으므로 이웃 검색 요청이 작동하지 않습니다. VPN에 사용되는 IPv6 주소를 이웃 검색에 대한 응답으로 기본 인터페이스(eth0)의 가상 주소로 정의할 수도 있나요? IPv4의 경우 NAT를 사용하면 문제가 없지만 IPv6에서 NAT를 사용하는 것은 해결책이 아니죠?
답변1
wg-quick
시스템이 각 개별 IPv6 주소로 터널링되는 /128 경로와 같이 평소와 같이 라우터로 구성되었다고 가정합니다(필요한 경우 도움말). OP에 정보가 제공되지 않았기 때문에 이 부분에 대해서는 도움을 드릴 수 없습니다.
이제 업스트림 라우터(에서 연결할 수 있는 서버 라우터 eth0
)는 해당 주소를 서버를 통해 구체적으로 라우팅해야 한다는 것을 알도록 설정되어 있지 않으며 구성을 변경할 수 없으므로 다음을 사용하여 LAN에서 대상을 검색합니다. 명령새로운 민주당, 그러나 이 주소를 소유하지 않고 라우팅하는 서버는 다음을 수신하더라도 이 쿼리에 신경 쓰지 않습니다. 연결 없음.
이러한 주소를 실제로 소유하지 않고도 해당 주소에 응답하도록 서버를 구성할 수 있습니다. 즉, 프록시 역할을 하고 해당 요청이 NDP를 통해 수신될 때 응답하므로 이름이 붙여졌습니다.ND 에이전트. 마지막으로 라우터는 (정적) 라우팅 설정에서 트래픽을 아는 대신 (동적으로 확인된) NDP에서 해당 주소로 트래픽을 보낼 위치를 알게 됩니다. 서버에 설치되면 이 모든 작업이 Linux 커널에 의해 처리됩니다.
다음 두 가지 설정을 완료해야 합니다( Linux의 arp_proxy
IPv4 해당 설정과 약간 다를 수 있음).
~할 수 있게 하다
proxy_ndp
ND 프록시에 필요한 인터페이스(eth0
):sysctl -w net.ipv6.conf.eth0.proxy_ndp=1
한 번은 꼭 해야 할 일이다.
서버가 라우팅할 각 IPv6 주소에 대해 ND 프록시 항목을 추가합니다. 예를 들어
2001:db8:1:2::4242
:ip neigh add proxy 2001:db8:1:2::4242 dev eth0
몇 가지 작은 세부 사항의 경우 프록시 주소와 연결된 멀티캐스트 주소(NDP에 사용됨)에 참여하는 서버를 확인할 수도 있습니다. 예를 들어:
$ ip maddr show dev eth0 | grep '42:*42 *$' link 33:33:ff:00:42:42 inet6 ff02::1:ff00:4242
이 키워드는
proxy
이러한 주소를 처리하는 데 필요합니다(-6
항상 사용해야 하거나 적어도 IPv4 ARP가 아닌 IPv6 NDP에 관한 것임을 나타내는 컨텍스트가 없는 경우). 예:ip -6 neigh show proxy # display ND proxy entries configured whatever the interface ip neigh delete proxy 2001:db8:1:2::4242 dev eth0 # delete a single entry ip -6 neigh flush proxy all dev eth0 # delete all of them on eth0
그럼에도 불구하고 인터페이스가 닫혔다가 열리면 매우 취약하여 자동으로 사라질 수 있습니다. 이 설정은 네트워크 도구 구성에 추가되어야 합니다
eth0
.
참고: 전체 LAN 또는 서브넷을 이 방식으로 처리해야 하는 경우 .if를 사용하는 것 외에도 해당 트래픽을 삭제하지 않고 사용자 공간을 통해 처리하도록 ip neigh ... proxy ...
인터페이스를 설정할 수 있습니다 . ALLMULTI
도구가 이미 작업을 수행하고 있습니다.ndppd
. OP의 상황에서는 이 도구를 권장하지 않습니다.