OpenVPN 클라이언트에 완전한 IPv6 서브넷을 할당하는 방법

OpenVPN 클라이언트에 완전한 IPv6 서브넷을 할당하는 방법

내 ISP가 IPv6를 지원하지 않기 때문에 OpenVPN을 사용하여 내 VPS에서 IPv6 연결을 터널링하려고 합니다. 내 VPS에는 /64 IPv6 서브넷이 있습니다. 저는 OpenWRT 라우터를 클라이언트로 사용하고 있으므로 OpenVPN 서버가 라우터에서 사용할 수 있는 전체 IPv6 서브넷을 할당하기를 원합니다. 내 현재 구성은 다음과 같습니다.

port myport
proto udp
dev tun
tun-ipv6
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
server 192.168.200.0 255.255.255.0
server-ipv6 2a03:4000:6:b11b:2::/80
push "redirect-gateway def1 bypass-dhcp"
push "route-ipv6 2000::/3"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
duplicate-cn
keepalive 20 60
comp-lzo
persist-key
persist-tun
daemon
log-append /var/log/myvpn/openvpn.log
verb 3

그러나 OpenVPN 서버는 2a03:4000:6:b11b:2::1000과 같이 IPv6 주소만 할당합니다.

그래서 제 질문은 클라이언트에 전체 IPv6 서브넷을 할당하기 위해 OpenVPN 서버를 어떻게 설정합니까?입니다.

답변1

클라이언트와 서버 사이에서 작동하도록 하세요.

먼저 서버의 TUN 장치로 패킷을 라우팅해야 합니다.

route-ipv6 $PREFIX

또한 OpenVPN 서버에 이 접두어를 클라이언트로 라우팅하도록 요청해야 합니다.

# This one needs to be in a CCD file:
iroute-ipv6 $PREFIX

이런 방식으로 서버는 해당 접두사에 대한 패킷을 클라이언트로 라우팅할 수 있어야 합니다.

클라이언트에서는 이 접두사에서 일부 IPv6 주소를 (수동으로) 구성해야 합니다. (리눅스의 경우: ) ip -6 addr $PREFIX dev tun0.

이 시점에서 당신은 할 수 있어야합니다

  • 서버에서 클라이언트 IP를 ping합니다.

  • 해당 클라이언트 IP에서 서버를 ping합니다.

이 접두사를 서브넷으로 라우팅합니다.

서버의 기본 인터페이스가 지점 간 인터페이스인 경우, 작동해야 합니다. 라우터는 해당 접두어에 대한 모든 패킷을 서버로 전달했으며 서버는 이를 클라이언트로 전달합니다.

기본 인터페이스가 지점 간 인터페이스가 아닌 경우, 당신은 곤경에 빠졌습니다. 패킷을 접두사의 IP로 전달하려고 하면 기본 링크의 호스트는 NDP를 사용하여 이 IPv6 주소와 연결된 MAC 주소를 찾으려고 합니다. 귀하의 서버는 이에 응답하지 않습니다(이 IPv6 주소는 해당 주소 중 하나가 아니기 때문입니다). 클라이언트는 동일한 링크에 있지 않으며 NDP 요청을 볼 수 없습니다(어쨌든 응답할 수 없습니다). 따라서 아무도 이러한 NDP 요청에 응답하지 않으며 패킷이 서버로 전송되지 않습니다.

당신은 할 수 있습니다:

  • ip -6 route add $PREFIX via $ipv6_of_the_server서버를 이 접두사( )에 대한 게이트웨이 로 사용하려면 라우터에 경로를 추가하세요 . 그러나 이것이 귀하의 라우터가 아닌 경우에는 이 작업을 수행하지 못할 수도 있습니다.

  • NDP 프록시 규칙을 추가합니다( ip -neigh add proxy $some_ipv6 dev eth0). 이렇게 하면 서버가 클라이언트를 대신하여 NDP 요청에 응답하게 됩니다. 그러나 (적어도 Linux에서는) 전체 IPV6 서브넷을 NDP 프록시로 추가할 수 없으므로 위임하려는 각 IPv6 주소에 대한 규칙을 추가해야 합니다.

TAP 터널 사용

기본 인터페이스가 이더넷 인터페이스인 경우 또 다른 가능성은 TUN(IP를 통해) 터널 대신 TAP(이더넷을 통해) OpenVPN 터널을 사용하고 가상 Tap 장치를 기본 인터페이스와 연결하는 것입니다. 이렇게 하면 클라이언트가 라우터와 동일한 링크에 있게 되고 NDP 요청에 응답할 수 있습니다.

관련 정보