라우팅 문제 - arp

라우팅 문제 - arp

두 개의 네트워크를 연결해야 하는 컴퓨터가 있습니다 192.168.0.x.192.168.1.x

192.168.0.x인터페이스를 통해 접근할 수 있고, tun3인터페이스 192.168.1.x를 통해 접근할 수 있습니다 virbr1.

0.x 컴퓨터는 1.x 컴퓨터와 통신할 수 있지만 그 반대는 아닌 것으로 보입니다.

virbr1의 arp 패킷이 삭제된 것 같습니다. 이런 일이 어디서 발생합니까?

다음은 두 네트워크를 연결해야 하는 호스트의 두 인터페이스(tun3 및 virbr1)에 대한 ifconfig입니다.

root@pgrozav:/home/paul/data/work/server# ifconfig tun3 ;
tun3 링크 캡슐:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet 주소: 10.1.0.1 PtP: 10.1.0.2 마스크: 255.255.255.255
          MTU 지점에서 NOARP 멀티캐스트 실행: 1500 지표: 1
          RX 패킷: 942 오류: 0 삭제: 0 오버플로: 0 프레임: 0
          TX 패킷: 463 오류: 0 삭제: 0 오버플로: 0 캐리어: 0
          충돌: 0 txqueuelen: 500
          RX 바이트: 88986(86.9KiB) TX 바이트: 42452(41.4KiB)

virbr1 링크 캡슐: 이더넷 HWaddr 52:54:00:78:23:3b  
          inet 주소: 192.168.1.1 브로드캐스트: 192.168.1.255 마스크: 255.255.255.0
          멀티캐스트를 실행하는 업스트림 브로드캐스트 MTU: 1500 측정항목: 1
          RX 패킷: 51616 오류: 0 삭제: 0 오버플로: 0 프레임: 0
          TX 패킷: 1198 오류: 0 삭제: 0 오버플로: 0 캐리어: 0
          충돌: 0 txqueuelen: 0
          RX 바이트: 1469672(1.4MiB) TX 바이트: 155418(151.7KiB)

또한 IPTables 규칙은 다음과 같습니다.

root@pgrozav:/home/paul/data/work/server# iptables -nvL
체인 입력(정책 ACCEPT 4097K 패킷, 1544M 바이트)
 pkts byte target prot는 출력 소스 대상을 선택합니다.         
    0 0 UDP 허용 -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
    0 0 TCP 수락 -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
    0 0 UDP 허용 -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
    0 0 tcp 허용 -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
    0 0 UDP 허용 -- virbr1 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
    0 0 tcp 허용 -- virbr1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
    0 0 UDP 허용 -- virbr1 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
    0 0 tcp 허용 -- virbr1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67

Chain FORWARD(정책은 481 패킷, 40360 바이트 허용)
 pkts byte target prot는 출력 소스 대상을 선택합니다.         
    0 0 모두 수락 -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate 관련, 확립
    0 0 모두 수락 -- virbr0 * 192.168.122.0/24 0.0.0.0/0           
    0 0 모두 수락 -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0           
    0 0 모두 거부 -- * virbr0 0.0.0.0/0 0.0.0.0/0 거부 icmp 포트에 연결할 수 없음
    0 0 모두 거부 -- virbr0 * 0.0.0.0/0 0.0.0.0/0 거부 icmp 포트에 연결할 수 없음
  393 42938 모두 수락 -- * virbr1 0.0.0.0/0 192.168.1.0/24 ctstate 관련, 확립됨
  397 35116 모두 수락 -- virbr1 * 192.168.1.0/24 0.0.0.0/0           
    0 0 모두 수락 -- virbr1 virbr1 0.0.0.0/0 0.0.0.0/0           
    0 0 모두 거부 -- virbr1 * 0.0.0.0/0 0.0.0.0/0 거부 icmp 포트에 연결할 수 없음

체인 출력(정책은 3217K 패킷, 435M 바이트 허용)
 pkts byte target prot는 출력 소스 대상을 선택합니다.         
    0 0 UDP 허용 -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
    0 0 UDP 허용 -- * virbr1 0.0.0.0/0 0.0.0.0/0 udp dpt:68
root@pgrozav:/home/paul/data/work/server# iptables -nvL -t nat
체인 PREROUTING(정책은 99697 패킷, 15M 바이트 허용)
 pkts byte target prot는 출력 소스 대상을 선택합니다.         

체인 입력(정책 ACCEPT 65648 패킷, 13M 바이트)
 pkts byte target prot는 출력 소스 대상을 선택합니다.         

체인 출력(정책은 169K 패킷, 12M 바이트 허용)
 pkts byte target prot는 출력 소스 대상을 선택합니다.         

체인 POSTROUTING(정책은 169K 패킷, 12M 바이트 허용)
 pkts byte target prot는 출력 소스 대상을 선택합니다.         
   69 5293 모두 반환-- * * 192.168.122.0/24 224.0.0.0/24        
    0 0 모두 반환 -- * * 192.168.122.0/24 255.255.255.255     
    0 0 위장 tcp -- * * 192.168.122.0/24 !192.168.122.0/24 마스크 포트: 1024-65535
    0 0 위장 udp -- * * 192.168.122.0/24 !192.168.122.0/24 마스크 포트: 1024-65535
    0 0 모두 변장 -- * * 192.168.122.0/24 !192.168.122.0/24    
   69 5293 모두 반환-- * * 192.168.1.0/24 224.0.0.0/24        
    0 0 모두 반환 -- * * 192.168.1.0/24 255.255.255.255     
    5 300 MASQUERADE tcp -- * * 192.168.1.0/24 !192.168.1.0/24 마스크 포트: 1024-65535
   12 766 MASQUERADE udp -- * * 192.168.1.0/24 !192.168.1.0/24 마스크 포트: 1024-65535
    5 420 모두 위장됨-- * * 192.168.1.0/24 !192.168.1.0/24      

라우팅 테이블은 다음과 같습니다.

root@pgrozav:/home/paul/data/work/server# IP 라우팅
기본값은 192.168.200.1 dev eth0입니다.
10.1.0.2 dev tun3 proto 커널 범위 링크 src 10.1.0.1
10.1.0.1 dev tun3 범위를 통해 연결된 192.168.0.0/24
192.168.1.0/24 dev virbr1 proto 커널 범위 링크 src 192.168.1.1
192.168.122.0/24 dev virbr0 프로토타입 커널 범위 링크 src 192.168.122.1
192.168.200.0/24 dev eth0 프로토타입 커널 범위 링크 src 192.168.200.70
root@pgrozav:/home/paul/data/work/server# IP 라우팅 목록 테이블 200
기본값은 10.1.0.1 dev tun3을 전달합니다.
10.1.0.1 dev tun3을 통한 192.168.1.0/24

실제로 이를 설정하는 스크립트가 있습니다.

원격 호스트 = 개발
터널 번호=3
터널 접두사 이름="tun"
터널 이름="$tunnelPrefixName$tunnelNumber"
터널 로컬 IP = "10.1.0.1"
터널 원격 ip="10.1.0.2"
원격 네트워크 가입="192.168.0.0"
RemoteNetworkToJoinNetmask="255.255.255.0"
RemoteNetworkToJoinInterfaceName="eth0"
localNetworkToJoin="192.168.1.0"
localNetworkToJoinNetmask="255.255.255.0"
localNetworkToJoinInterfaceName="virbr1"


        ssh -f -NTC -w $tunnelNumber:$tunnelNumber $remoteHost
        IP 링크 설정 $tunnelName up
        ssh $remoteHost IP 링크 설정 $tunnelName up
        IP 주소 추가 $tunnelLocalIP/32 피어 $tunnelRemoteIP 개발자 $tunnelName
        SSH $remoteHost IP 주소 추가 $tunnelRemoteIP/32 피어 $tunnelLocalIP dev $tunnelName
        경로 추가 -net $remoteNetworkToJoin gw $tunnelLocalIP 넷마스크 $remoteNetworkToJoinNetmask dev $tunnelName
        $tunnelLocalIP dev $tunnelName 테이블 200을 통한 IP 경로 기본값 추가
        $localNetworkToJoin/24 테이블 200에서 IP 규칙 추가
        ssh $remoteHost 경로 add-net $localNetworkToJoin gw $tunnelRemoteIP 네트워크 마스크 $localNetworkToJoinNetmask dev $tunnelName
        ssh $remoteHost iptables -A 전달 -i $remoteNetworkToJoinInterfaceName -o $tunnelName -m 상태 --상태가 설정됨, 관련 -j 허용됨
        ssh $remoteHost iptables -A FORWARD -s $tunnelLocalIP -o $remoteNetworkToJoinInterfaceName -j 수락
        ssh $remoteHost iptables -t nat -A POSTROUTING -s $tunnelLocalIP -o $remoteNetworkToJoinInterfaceName -j MASQUERADE

저는 이 머신에서 KVM을 실행하고 있으며 virbr1은 모든 VM이 있는 가상 LAN에 내 머신을 연결합니다. 내 로컬 LAN(가상 머신 - 1.x 포함)을 원격 네트워크(0.x)에 연결하려고 합니다.

답변1

Arps는 LAN에서 IP-MAC 쌍을 식별하는 데 사용됩니다. ARP가 귀하의 문제와 관련이 있는지 확실하지 않습니다.

0.x -> 1.x 연결이 잘 되면 통신 중에 0.x에서 1.x로, 1.x에서 0.x로 패킷이 전송되기 때문에 라우팅 문제가 없다는 뜻입니다( TCP 통신을 가정)

1.x -> 0.x의 연결이 실패하면 방화벽, NAT, 애플리케이션 액세스 목록, TCP 래퍼 등이 있을 수 있습니다.

클라이언트, 게이트웨이, 서버를 확인해야 합니다.

답변2

내 1.2 컴퓨터의 라우팅 테이블에 문제가 있어서 거기에서 0.6으로 ping을 보냅니다.

[root@localhost ~]# IP 라우팅 목록
기본값은 192.168.1.1 dev eth0 proto static metric 100입니다.                                                                          
192.168.1.1 dev eth0 원시 정적을 통한 192.168.0.0                                                                       
192.168.0.0/16dev eth0 프로토타입 커널 범위 링크 src 192.168.1.2 메트릭 100

나는 VM이 ​​깨끗하고 (기본적으로) 빈 라우팅 테이블과 iptables를 가지고 있다고 가정합니다. 나는 이것을 알아 내려고 며칠 또는 몇 주를 보냈습니다.

시간을 내주셔서 감사하고 죄송합니다.

관련 정보