OpenVPN 클라이언트가 OpenVPN 서버에 연결되어 있습니다.
서버에는 다음과 같은 경로가 있습니다.
default via 10.109.185.65 dev eth0 proto dhcp src 10.109.185.84 metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
10.109.185.64/27 dev eth0 proto kernel scope link src 10.109.185.84
10.109.185.65 dev eth0 proto dhcp scope link src 10.109.185.84 metric 100
tun0
클라이언트는 OpenVPN이 생성한 가상 인터페이스에 다음 주소를 갖습니다.
11: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.3/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::3c55:91d1:e8cf:7c55/64 scope link flags 800
valid_lft forever preferred_lft forever
서버에서 클라이언트에 ping을 보내면 ping 10.8.0.3
제대로 작동합니다.
tun0
그런 다음 다음을 수행하여 클라이언트에 두 번째 IP 주소를 추가했습니다 ip addr add 10.100.1.2/24 dev tun0
. 인터페이스에 다음 tun0
과 같이 표시됩니다.
inet 10.100.1.2/24 scope global tun0
valid_lft forever preferred_lft forever
서버에서 다음을 수행하여 해당 서브넷에 대한 경로를 추가했습니다 ip route add 10.100.1.0/24 dev tun0
. 경로 목록에 다음과 같이 나타납니다.
10.100.1.0/24 dev tun0 scope link
ping 10.100.1.2
그러나 서버에서는 시도가 실패했습니다.
그런 다음 서버와 클라이언트 모두 다음과 같은 iptables FORWARD 규칙을 가지고 있음을 확인했습니다.
ACCEPT all -- 10.8.0.0/24 anywhere
iptables -A FORWARD -s 10.100.1.0/24
그래서 서버와 클라이언트 모두에서 이 작업을 수행하여 10.100.1.0 서브넷에 대한 또 다른 FORWARD 규칙을 추가했습니다.
ping 10.100.1.2
그러나 서버에서 시도하는 것은 여전히 실패합니다.
서버에서 10.100.1.2에 ping을 보내기 위해 수행해야 할 다른 작업이 있습니까?
답변1
고려해야 할 세 가지 사항:
1. 라우팅
두 번째 IP 범위( )는 인터페이스 10.100.1.0/24
에 직접 연결됩니다 . 따라서 귀하의 컴퓨터는 정적 라우팅 문을 삽입하지 않고도 네트워크에 tun0
액세스하는 방법을 알게 됩니다 . 10.100.1.0/24
두 번째 IP를 추가한 직후 다음 명령을 실행하면 해당 경로가 테이블에 동적으로 추가된 것을 확인할 수 있습니다.
$ sudo ip route show
2. P2P 네트워크
tun0
VPN 터널을 생성할 때 VPN 서버와 클라이언트 사이에 가상 네트워크 어댑터(이 경우)를 사용하여 지점 간 네트워크를 생성합니다. 이 인터페이스에 두 번째 또는 세 번째 이상의 IP 주소를 할당하면 지점 간 작업이 복잡해집니다.
3. 솔루션
선택한 두 번째 IP 주소를 할당할 새 가상 네트워크 어댑터를 만듭니다. 필요한 경우가 아니면 경로 선언은 필요하지 않습니다. 또한 추가 iptables
규칙이 필요하지 않습니다. (이전에 생성한 정적 경로를 제거하고 첨부된 iptables 규칙을 제거해야 합니다. 작업을 수행하는 데는 이 중 어떤 것도 필요하지 않습니다.)
VPN 서버에서:
$ lsmod | grep dummy
위 명령은 "더미" 네트워크 드라이버(모듈)가 커널에 로드되어 있는지 확인합니다. 로드되지 않으면 설명서를 확인하세요.여기
$ sudo ip link add tun99 type dummy
$ sudo ip link set dev tun99 up
위 명령은 다음과 같은 새로운 가상 네트워크 어댑터를 생성합니다.tun99
$ sudo ip address change dev tun99 10.100.1.1
10.100.1.1/32
위 명령은 새로 생성된 네트워크 어댑터에 IP 주소를 할당합니다.tun99
Point-to-Point 네트워크이므로 경로 선언이 필요하지 않습니다.
VPN 클라이언트에서:
$ sudo ip link add tun99 type dummy
$ sudo ip link set dev tun99 up
$ sudo ip address change dev tun99 10.100.1.2
VPN 클라이언트에서 VPN 서버의 IP로 ping 요청을 보내 연결을 테스트합니다. 10.100.1.1
$ ping 10.100.1.1
답변2
iptables -A FORWARD -s 10.100.1.0/24
이 명령이 포함되지 않은 경우 -j ACCEPT
트래픽 카운터를 추가하여 규칙 세트의 해당 지점에 도달하는 10.100.1.0/24 네트워크와 일치하는 패킷 + 바이트 수를 측정하기만 하면 됩니다. 아무 작업도 수행하지 않는 규칙을 지정하면 규칙과 일치하는 패킷만 계산하고 다른 작업은 수행하지 않습니다.
추가적으로 -A
옵션은추가테이블의 기존 규칙 세트 끝에 새 규칙을 추가합니다. 규칙은 순차적으로 처리되며, 테이블의 마지막 규칙에 "모두 거부" 규칙(일반적으로 권장됨)이 있는 경우 그 이후의 모든 규칙은 생성되지 않습니다. 어떤 영향. 그렇다면 보다 적절한 위치에 새 규칙을 삽입해야 합니다.