서버와 OpenVPN 클라이언트가 설치되어 있고 터널을 통해 인터넷에 연결되어 있는데 모든 것이 잘 작동합니다. LAN 인터페이스(192.168.1.x)를 통해서도 서버에 액세스할 수 있습니다. 하지만 LAN의 다른 IP 범위인 10.8.0.x에서 동일한 서버에 액세스하려고 하면 작동하지 않습니다. VPNClient를 끄면 다시 잘 작동합니다.
서버에서 실행 중인 VPN 클라이언트가 없는 경우 10.8.0.x 범위의 클라이언트가 서버에 액세스할 수 있습니다.
root@server:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0
enp0s31f6
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0
enp0s31f6
192.168.0.0 0.0.0.0 255.255.0.0 U 100 0 0
enp0s31f6
VPN 클라이언트가 서버에서 실행 중인 경우 10.8.0.x 범위의 클라이언트는 서버에 액세스할 수 없습니다.
root@server:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.23.10.5 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enp0s31f6
10.23.10.1 10.23.10.5 255.255.255.255 UGH 0 0 0 tun0
10.23.10.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
46.166.188.211 192.168.1.1 255.255.255.255 UGH 0 0 0 enp0s31f6
128.0.0.0 10.23.10.5 128.0.0.0 UG 0 0 0 tun0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
192.168.0.0 0.0.0.0 255.255.0.0 U 100 0 0 enp0s31f6
또한 enp0s31f6 인터페이스를 통해 10.8.0.0 트래픽을 라우팅하도록 네트워크에 명시적으로 알리기 위해 제출 경로를 추가해 보았습니다.
root@server:~# route add -net 10.8.0.0 netmask 255.255.0.0 dev enp0s31f6
그러나 행운이 없습니다.
왜 이런지 아는 사람 있나요?
답변1
tun
VPN 인터페이스와 연결된 서브넷에 대한 경로를 수동으로 추가할 필요가 없습니다 . 클라이언트가 이를 설정해야 합니다. 또한 tun
openvpn이 패킷을 라우팅하는 방식으로 인해 이더넷 인터페이스에 경로를 추가하면 해당 인터페이스에 대해 작동하지 않습니다.
client-to-client
서버 구성에서 이를 활성화하고 규칙이 있는지 확인 해야 할 것 같습니다 iptables
.
iptables -A INPUT -i tun0 -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT