Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

6.3. 프로젝트 네트워크에서 문제 해결

OpenStack Networking에서는 프로젝트에서 서로 방해하지 않고 네트워크를 구성할 수 있도록 모든 프로젝트 트래픽이 네트워크 네임스페이스에 포함됩니다. 예를 들어 네트워크 네임스페이스를 사용하면 서로 다른 프로젝트 간에 간섭 없이 동일한 서브넷 범위를 192.168.1.1/24로 설정할 수 있습니다.

프로젝트 네트워크 문제 해결을 시작하려면 먼저 네트워크가 포함된 네트워크 네임스페이스를 결정합니다.

  1. openstack network list 명령을 사용하여 모든 프로젝트 네트워크를 나열합니다.

    # (overcloud)[stack@osp13-undercloud ~]$ openstack network list
    +--------------------------------------+-------------+-------------------------------------------------------+
    | id                                   | name        | subnets                                               |
    +--------------------------------------+-------------+-------------------------------------------------------+
    | 9cb32fe0-d7fb-432c-b116-f483c6497b08 | web-servers | 453d6769-fcde-4796-a205-66ee01680bba 192.168.212.0/24 |
    | a0cc8cdd-575f-4788-a3e3-5df8c6d0dd81 | private     | c1e58160-707f-44a7-bf94-8694f29e74d3 10.0.0.0/24      |
    | baadd774-87e9-4e97-a055-326bb422b29b | private     | 340c58e1-7fe7-4cf2-96a7-96a0a4ff3231 192.168.200.0/24 |
    | 24ba3a36-5645-4f46-be47-f6af2a7d8af2 | public      | 35f3d2cb-6e4b-4527-a932-952a395c4bb3 172.24.4.224/28  |
    +--------------------------------------+-------------+-------------------------------------------------------+

    이 예에서 web-servers 네트워크를 살펴봅니다. web-server 행에서 id 값을 기록합니다(9cb32fe0-d7fb-432c-b116-f483c6497b08). 이 값은 네트워크 네임스페이스에 추가되어 다음 단계에서 네임스페이스를 식별하는 데 도움이 됩니다.

  2. ip netns list 명령을 사용하여 모든 네트워크 네임스페이스를 나열합니다.

    # ip netns list
    qdhcp-9cb32fe0-d7fb-432c-b116-f483c6497b08
    qrouter-31680a1c-9b3e-4906-bd69-cb39ed5faa01
    qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b
    qdhcp-a0cc8cdd-575f-4788-a3e3-5df8c6d0dd81
    qrouter-e9281608-52a6-4576-86a6-92955df46f56

    출력에는 web-servers 네트워크 ID와 일치하는 네임스페이스가 포함되어 있습니다. 이 예에서 네임스페이스는 qdhcp-9cb32fe0-d7fb-432c-b116-f483c6497b08 입니다.

  3. 네임스페이스 내에서 명령을 실행하고 ip netns exec <namespace> 를 사용하여 문제 해결 명령 앞에 추가하여 web-servers 네트워크의 구성을 검사합니다.

    # ip netns exec qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b route -n
    
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         172.24.4.225    0.0.0.0         UG    0      0        0 qg-8d128f89-87
    172.24.4.224    0.0.0.0         255.255.255.240 U     0      0        0 qg-8d128f89-87
    192.168.200.0   0.0.0.0         255.255.255.0   U     0      0        0 qr-8efd6357-96

6.3.1. 네임 스페이스 내에서 고급 ICMP 테스트 수행

  1. tcpdump 명령을 사용하여 ICMP 트래픽을 캡처합니다.

    # ip netns exec qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b tcpdump -qnntpi any icmp
  2. 별도의 명령줄 창에서 외부 네트워크에 대한 ping 테스트를 수행합니다.

    # ip netns exec qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b ping www.redhat.com
  3. tcpdump 세션을 실행하는 터미널에서 ping 테스트의 자세한 결과를 관찰합니다.

    tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
    IP (tos 0xc0, ttl 64, id 55447, offset 0, flags [none], proto ICMP (1), length 88)
        172.24.4.228 > 172.24.4.228: ICMP host 192.168.200.20 unreachable, length 68
    	IP (tos 0x0, ttl 64, id 22976, offset 0, flags [DF], proto UDP (17), length 60)
        172.24.4.228.40278 > 192.168.200.21: [bad udp cksum 0xfa7b -> 0xe235!] UDP, length 32
참고

트래픽에 대한 tcpdump 분석을 수행할 때 인스턴스 대신 라우터 인터페이스로 향하는 패킷이 응답하는 것을 관찰할 수 있습니다. qrouter가 반환 패킷에서 DNAT를 수행하므로 이는 예상된 동작입니다.