다른 컴퓨터의 인터페이스에서 두 번째 IP 주소를 ping할 수 없습니다.

다른 컴퓨터의 인터페이스에서 두 번째 IP 주소를 ping할 수 없습니다.

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 네트워크

tun0VPN 터널을 생성할 때 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옵션은추가테이블의 기존 규칙 세트 끝에 새 규칙을 추가합니다. 규칙은 순차적으로 처리되며, 테이블의 마지막 규칙에 "모두 거부" 규칙(일반적으로 권장됨)이 있는 경우 그 이후의 모든 규칙은 생성되지 않습니다. 어떤 영향. 그렇다면 보다 적절한 위치에 새 규칙을 삽입해야 합니다.

관련 정보