중간 하위 도메인이 있어야합니까?


27

호스트 example.comleaf.intermediate.example.comDNS 레코드가 example.com있지만 intermediate.example.com자체 레코드가없는 경우 일부 상황에서 문제가 발생하거나 어떤 이유로 나쁜 스타일이나 예의가 있습니까? 웹 서버를 이와 같이 설정했는데 모든 것이 잘 작동하는 것 같지만 누락 된 것이 있는지 확인하고 싶었습니다.



2
당신의 제목은 존재를 요구하고 , 시체 는 아무 기록도 요구 하지 않습니다 . 자세한 내용은 아래 주석을 참조하십시오
Hagen von Eitzen

답변:


38

TL; DR : 예, 최소한 DNS의 정의에 따라 쿼리 할 때 중간 하위 도메인이 있어야합니다. 존 파일에는 존재하지 않을 수도 있습니다.

먼저 제거 할 수있는 혼란. "비 터미널 비우기"의 정의

다른 답변이하는 것처럼 두 가지를 혼란스럽게 할 수 있습니다. 즉, 이름을 쿼리 할 때 발생하는 작업과 이름 서버 및 영역 파일의 내용을 구성하는 방법이 다릅니다.

DNS는 계층 적입니다. 리프 노드가 존재하기 위해서는 그 노드로 이어지는 모든 구성 요소가 존재해야합니다. 이는 요청이있을 경우 책임있는 네임 네임 서버가 오류없이 응답해야한다는 의미입니다.

RFC 8020 (항상 규칙의 반복이지만 일부 DNS 제공 업체 만 미리 알림이 필요함)에 설명 된 바와 같이 쿼리에 대해 권한있는 네임 서버가 NXDOMAIN (즉,이 리소스 레코드가 없음)으로 응답하면, 이는이 자원이 "아래"라는 레이블도 존재하지 않음을 의미합니다.

에 대한 쿼리 경우 예에서, intermediate.example.com반환 NXDOMAIN후 어떤 적절한 재귀 네임 서버가 즉시 회신 해 드리겠습니다 NXDOMAIN을 위해 leaf.intermediate.example.com이 기록이 존재할 수 있기 때문에 모든 라벨은 레코드로 존재하지 않는 경우.

이것은 RFC 4592 에서 과거 에 와일드 카드에 대해 이미 언급되었습니다 (여기서는 관련이 없습니다).

도메인 네임 스페이스는 트리 구조입니다. 트리의 노드는
하나 이상의 RRSet을 소유하거나 하나 이상의 RRSet을 집합 적으로 소유하는 자손을
갖습니다. 하위 노드가있는 경우에만 RRSet이없는 노드가 존재할 수 있습니다
. 이 노드는 비어있는 비 터미널입니다.

자손이없는 노드는 리프 노드입니다. 빈 리프 노드가 없습니다.

미국 도메인 이름을 가진 실제 예

역사적으로 많은 레이블을 가진 TLD에서 실제 예제를 보자 .US. 온라인에서 어떤 예를 골라 보자 www.teh.k12.ca.us.

물론이 이름을 쿼리하거나 레코드를 teh.k12.ca.us다시 가져올 수도 있습니다 A. 우리의 목적을 위해 결정적인 것은 없습니다 (중간에 CNAME도 있지만 우리는 그것에 신경 쓰지 않습니다) :

$ dig www.teh.k12.ca.us A +short
CA02205882.schoolwires.net.
107.21.20.201
35.172.15.22
$ dig teh.k12.ca.us A +short
162.242.146.30
184.72.49.125
54.204.24.19
54.214.44.86

k12.ca.us( 지금 은 권위있는 네임 서버를 쿼리하지는 않지만 결과는 바뀌지 않습니다) :

$ dig k12.ca.us A

; <<>> DiG 9.11.5-P1-1ubuntu2.5-Ubuntu <<>> k12.ca.us A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59101
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1480
;; QUESTION SECTION:
;k12.ca.us.         IN  A

;; AUTHORITY SECTION:
us.         3587    IN  SOA a.cctld.us. hostmaster.neustar.biz. 2024847624 900 900 604800 86400

;; Query time: 115 msec
;; SERVER: 127.0.0.10#53(127.0.0.10)
;; WHEN: mer. juil. 03 01:13:20 EST 2019
;; MSG SIZE  rcvd: 104

이 답변에서 무엇을 배울 수 있습니까?

첫째, 상태가이므로 성공입니다 NOERROR. 그것이 다른 어떤 것이 든 구체적으로 존재 NXDOMAIN했다면 존재 teh.k12.ca.us하지도 www.teh.k12.ca.us않을 것입니다.

둘째, 답변 섹션이 비어 있습니다. 에 대한 A레코드 가 없습니다 k12.ca.us. 이 오류 A는이 레코드에 대해이 유형 ( )이 존재하지 않지만이 레코드에 대해 다른 레코드 유형이 존재하거나이 레코드가 ENT 일 수 있습니다 ( "비 터미널 비우기"). 비어 있지만 잎이 아닙니다. 우리가 이미 알고 있듯이 "아래"( RFC 7719의 정의 참조) 것들이 있습니다 (그러나 일반적으로 해상도는 하향식이므로 시연을 위해 여기에서 수행하는 것과 반대가 아닌 한 단계 아래로 이동하기 전에이 단계에 도달합니다) 목적).

사실 바로 가기로서 상태 코드는 NODATA다음과 같습니다. 이것은 실제 상태 코드가 아닙니다. NOERROR+ 빈 ANSWER 섹션을 의미합니다. 즉,이 특정 레코드 유형에 대한 데이터는 없지만 다른 것에는 해당 될 수 있습니다.

다음 "위"레이블을 사용하여 쿼리하면 동일한 결과에 대해 동일한 실험을 반복 할 수 있습니다 (이름) ca.us.

쿼리 결과와 영역 파일 내용

이제 혼란이 어디에서 올 수 있습니까? DNS 이름에 점이 있으면 대표단이 있다는 잘못된 생각에서 비롯된 것 같습니다. 이것은 거짓입니다. 다르게 example.com말하면 , 귀하의 존 파일은 이와 같을 수 있으며 완전히 유효하고 작동합니다.

example.com. IN SOA ....
example.com. IN NS ....
example.com. IN NS ....

leaf.intermediate.example.com IN A 192.0.2.37

이러한 영역 파일을 사용하면이 네임 서버를 쿼리하면 위에서 관찰 된 것과 정확히 동일한 동작을 얻을 수 있습니다.에 대한 쿼리 는 빈 답변으로 intermediate.example.com반환 NOERROR됩니다. zonefile에서 특별히 생성 할 필요는 없습니다 (다른 이유로 필요하지 않은 경우), 권한이있는 네임 서버는이 빈 비 터미널 (및 모든 leaf name을 보면 다른 레이블이있는 경우 다른 "중간" leaf.intermediate.example.com입니다.

실제로 일부 지역에서는이 사례가 널리 퍼져 있지만 사람들이 노출되지 않은 더 많은 "인프라"레코드를 대상으로하기 때문에 보이지 않을 수도 있습니다.

  • 추천 반대 영역에서 in-addr.arp또는 ip6.arpa, 특히 마지막. 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.1.d.e.1.6.8.0.0.0.0.0.0.2.6.2.ip6.arpa. 1h IN PTR text-lb.eqiad.wikimedia.org.각 기록에 같은 기록이 있고 각 점에 위임이 없거나 각 기록에 부착 된 자원 기록이 없습니다.
  • SRV기록, 같은 _nicname._tcp.fr. 12h IN SRV 0 0 43 whois.nic.fr.도메인은 많은 수 _proto._tcp.example.com_proto._udp.example.com SRV설계가이 양식이 있어야 있기 때문에 동시에, 기록 _tcp.example.com_udp.example.com레코드로 사용하지 않기 때문에 빈 비 터미널 유지됩니다
  • 실제로 DKIM과 같은 다양한 프로토콜에 대한 "밑줄 레이블"을 기반으로 이름을 구성하는 다른 많은 경우가 있습니다. DKIM은와 같은 DNS 레코드를 요구 whatever._domainkey.example.com하지만 분명히 _domainkey.example.com그 자체로는 사용되지 않으므로 비어있는 비 터미널로 유지됩니다. 이것은 동일합니다 TLSA: (예 : DANE의 레코드 _25._tcp.somehost.example.com. TLSA 3 1 1 BASE64==, 또는) URI기록 (예 : _ftp._tcp IN URI 10 1 "ftp://ftp1.example.com/public")

네임 서버 동작 및 중간 응답 생성

네임 서버가 왜 그런 중간 응답을 자동으로 합성합니까? RFC 1034 섹션 4.3.2에 자세히 설명 된 DNS의 핵심 해상도 알고리즘 은 그 이유입니다. 위의 권한있는 네임 서버에 이름을 쿼리 할 때이를 고려하여 요약 해 보겠습니다 intermediate.example.com( QNAME아래의 프로토콜 임).

  1. QNAME의 가장 가까운 조상 인 영역에 대해 사용 가능한 영역을 검색하십시오. 이러한 영역이 발견되면 3 단계로 이동하고, 그렇지 않으면 4 단계로 이동하십시오.

네임 서버는 영역 example.com을 QNAME의 가장 가까운 조상으로 인식하므로 3 단계로 이동할 수 있습니다.

우리는 지금 이것을 가지고 있습니다 :

  1. 영역에서 레이블별로 레이블을 일치시키기 시작하십시오. [..]

에이. QNAME 전체가 일치하면 노드를 찾았습니다. [..]

비. 일치하는 내용이 권위있는 데이터에서 제외 될 경우 추천이 있습니다. 이는 영역 하단에서 NS RR 표시 컷이있는 노드가 발생할 때 발생합니다. [..]

기음. 일부 레이블에서 일치하는 것이 불가능한 경우 (즉, 해당 레이블이 존재하지 않는 경우) "*"레이블이 있는지 확인하십시오. [..]

존 파일에는 위임이 없기 때문에 (예 : 다른 네임 서버에 대한 참조가 없으며, 케이스 b가 없음) 와일드 카드 (그래서 c가 없음)이므로 케이스 b와 c를 제거 할 수 있습니다.

우리는 여기서 사건 a 만 다루어야합니다.

영역에서 레이블별로 레이블을 일치시키기 시작합니다. 그래서 우리가 긴 sub.sub.sub.sub.sub.sub.sub.sub.example.com이름 을 가졌더라도 어느 시점에서 우리는 사례 a에 도달합니다. 우리는 추천이나 와일드 카드를 찾지 못했지만 결과를 원했던 최종 이름으로 끝났습니다.

그런 다음 사례 a의 나머지 내용을 적용합니다.

노드의 데이터가 CNAME 인 경우

우리의 경우가 아니라 우리는 그것을 건너 뜁니다.

그렇지 않으면 QTYPE과 일치하는 모든 RR을 응답 섹션에 복사하고 6 단계로 이동하십시오.

(우리가 선택 QTYPE 무엇 이건 A, AAAA, NS우리가에 대한 RR이 없다 등) intermediate.example.com는 zonefile에 표시되지 않는합니다. 여기 사본이 비어 있습니다. 이제 6 단계에서 마칩니다.

로컬 데이터 만 사용하여 쿼리의 추가 섹션에 유용 할 수있는 다른 RR을 추가하십시오. 출구.

여기서 우리와 관련이 없으므로 성공으로 끝납니다.

이것은 관찰 된 동작을 정확하게 설명합니다 : 이러한 쿼리는 반환 NOERROR하지만 데이터는 없습니다.

이제, 당신은 스스로에게 물을 수도 있습니다 : "그러나 만약 내가 another.example.com위와 같은 알고리즘으로 어떤 이름을 사용한다면 같은 응답을받을 것 NXDOMAIN입니다."

왜?

설명 된대로 전체 알고리즘은 다음과 같이 시작합니다.

다음 알고리즘은 RR이 여러 개의 트리 구조로 구성되어 있다고 가정합니다 (각 영역마다 하나씩, 다른 하나는 캐시 용으로).

이것은 위의 존파일이이 트리로 변환되었음을 의미합니다 :

+-----+
| com |  (just to show the delegation, does not exist in this nameserver)
+-----+
   |
   |
   |
+---------+
| example | SOA, NS records
+---------+
   |
   |
   |
+--------------+
| intermediate | no records
+--------------+
   |
   |
   |
+------+
| leaf | A record
+------+

: 상단에서, 알고리즘을 다음과 같은 때, 당신은 참으로 경로를 찾을 수 있습니다 com > example > intermediate(경로가 있기 때문에 com > example > intermediate > leaf존재)하지만 another.example.com후에, com > example당신이 찾을 수없는 another트리에서 라벨을 아이들의 노드로, example. 그러므로 위에서 우리는 선택 c의 일부에 속합니다.

"*"레이블이 없으면 찾고있는 이름이 쿼리의 원래 QNAME인지 또는 CNAME으로 인해 따라온 이름인지 확인하십시오. 이름이 원래 인 경우 응답에 권한 이름 오류를 설정하고 종료하십시오. 그렇지 않으면 그냥 종료하십시오.

레이블 *이 존재하지 않으며을 따르지 않았으므로 다음과 같은 CNAME경우에 해당합니다. set an authoritative name error in the response and exit, aka NXDOMAIN.

위의 모든 것은 과거에 혼란을 초래했습니다. 이것은 일부 RFC에서 수집됩니다. 예를 들어이 예상치 못한 장소 (그래서 꿰 뚫을 수있는 DNS 사양의 기쁨) 정의 와일드 카드를 참조하십시오 4592 RFC는 "도메인 이름 시스템에서 와일드 카드의 역할" 의 시작 부분과 특히 자사의 2.2 절 "존재의 규칙", 또한 부분적으로 인용을 내 대답이지만 여기에 더 완전합니다.

비어있는 비 터미널 [RFC2136, 섹션 7.16]은 리소스 레코드는 없지만 하위 도메인이있는 도메인 이름입니다. 2.2.1 절
. "_tcp.host1.example." 빈 비 터미널 이름의 예입니다.
RFC 1034의 섹션 3.1에서이 텍스트에 빈 비 터미널이 도입되었습니다.

# The domain name space is a tree structure.  Each node and leaf on
# the tree corresponds to a resource set (which may be empty).  The
# domain system makes no distinctions between the uses of the
# interior nodes and leaves, and this memo uses the term "node" to
# refer to both.

"비어있을 수있는"괄호는 비어있는 비
터미널이 명시 적으로 인식되고 비어있는 비 터미널이
"존재"함을 지정합니다.

위의 단락을 읽음으로써 읽을 수
있는 모든 도메인이 존재한다는 해석으로 이어질 수 있습니다 (
도메인 이름에 대해 제안 된 최대 255 옥텟 [RFC1035]). 예를 들어
www.example입니다. A는 RR을 가질 수 있으며, 실제로
는 도메인 트리의 잎이다. 그러나 그 정의는
그 하위 www.example을 의미 할 수 있습니다 . 데이터는 없지만 존재합니다. 또한 루트부터 루트까지 가능한 모든 도메인이 존재합니다.

RFC 1034는 또한 4.3.1 절에서 "이름이 존재하지 않음을 나타내는 신뢰할 수있는 이름 오류"를 정의하므로, 이것은 원래 정의의 의도가 아니기 때문에 다음 섹션에서 업데이트 된 정의의 필요성을 정당화합니다.

그리고 다음 섹션의 정의는 처음에 인용 한 단락입니다.

(에 RFC 8020 점에 유의 NXDOMAIN정말 의미 NXDOMAIN회신 경우이며, NXDOMAIN대한 intermediate.example.com다음, leaf.intermediate.example.com다양한 DNS 제공 업체는이 해석하고 만들어 혼란을 따르지 않았거나 그들은 단지 버그했다, 예를 들어이 하나보기 때문에 존재할 수 없다)이 부분에 위임했다 하나의 오픈 소스 권위있는 네임 서버 코드로 2013 년에 수정되었습니다 : https://github.com/PowerDNS/pdns/issues/127

그런 다음 사람들은 특정 카운터 조치 만 취해야했습니다. 일부 노드에 NXDOMAIN도달 한 경우 해당 제공자에게는 그 아래에있는 다른 노드 NXDOMAIN가 아닌 다른 것을 얻을 수 있기 때문에 적극적으로 캐싱하지 않습니다 NXDOMAIN.

이로 인해 QNAME 최소화 (RFC 7816)를 얻을 수 없었습니다 (자세한 내용은 https://indico.dns-oarc.net/event/21/contributions/298/attachments/267/487/qname-min.pdf 참조). 프라이버시를 높이고 싶었지만 DNSSEC의 경우 빈 비 터미널이 존재하면 과거에도 존재하지 않는 처리 문제가 발생했습니다 ( https://indico.dns-oarc.net/event/25/contributions/403/attachments/378/647 참조). /AFNIC_OARC_Dallas.pdf 관심이 있다면 DNSSEC에 대해 잘 알고 있어야합니다.

다음 두 메시지는 한 공급자가 비어있는 비 터미널에 대해이 규칙을 올바르게 적용 할 수 있어야하는 문제의 예를 제공하며 문제에 대한 일부 관점과 그 이유를 알려줍니다.


훌륭한 답변입니다. RFC에서 요구하는 중간 도메인에 대한 회신의 합성은 사실상의 규칙입니까?
Lassi

1
@Lassi는 편집 된 대답을보고 섹션에 넣는 것 외에도 리졸버 알고리즘에 대한 전체 설명을 추가했습니다 (따라서 규범이 아니지만 실제로는 RFC 1034 및 DNS의 성경 인 경우에도 RFC에서 나오는 것이 있습니다) 1035는 부정확성과 모호함으로 가득 차 있으므로 언어와 규칙을 구체화하기 위해 다른 RFC가 많이 필요했습니다.)
Patrick Mevzek

1
@Lassi I : 인프라 레코드에서 PENT, SRV, TXT (DKIM 용 TXT, TLSA, URI)
Patrick Mevzek

엄청나게 철저한 작업. 노력해 주셔서 감사합니다!
Lassi

11

Khaled의 답변을 오해 할 가능성이 있지만 중간 레코드가 부족하더라도 하위 영역 이름의 확인에 문제가 없어야합니다. 이 발굴 결과는 신뢰할 수있는 DNS 서버 teaparty.net또는 그 하위 영역에서 나오 거나 지시되지 않습니다 .

[me@nand ~]$ dig very.deep.host.with.no.immediate.parents.teaparty.net
[...]
;; ANSWER SECTION:
very.deep.host.with.no.immediate.parents.teaparty.net. 3600 IN A 198.51.100.200

실제로, 당신은 그것을 dig스스로 할 수 있고 그 대답을 얻을 수 있어야합니다 - teaparty.net내 통제하에 실제 도메인이며 실제로 그 A레코드를 포함합니다 . very와 사이에 해당 영역에 대한 레코드 teaparty.net가없고 위의 호스트 이름 확인에 영향을 미치지 않는지 확인할 수 있습니다 .


1
필자는 여기서 깊이 벗어나기 시작했지만 Patrick의 답변을 바탕으로 teaparty.net단일 영역 파일에 모든 레코드가 있으므로 빈 레코드가 중간 도메인에 대해 합성 되기 때문에 아마도 작동 합니다. parents.teaparty.net위임이 있고 위임 영역 파일 very.deep.host.with.no.immediate에 레코드 만 있는 경우 어떻게되는지 설명 할 수 있습니까 ?
Lassi

@Lassi 정확히 그 때문에, 위 참조 같은 일을 정확히 같은 경우와는 : teaparty.net의 위임 된 하위 도메인 net; 해당 영역 파일에있는 유일한 A 레코드는 very.deep...중요하지 않습니다.
MadHatter는

1
여기에 메타 토론 - 예 링크는 RFC 규격 예를 들어 도메인을 사용한다 : meta.stackexchange.com/questions/186529/...
HomoTechsual

1
예제 링크가 아닙니다. 실제로 작동합니다 (시도하는 것이 귀찮았습니까?). 이 메타 토론 에서 볼 수 있듯이 질문과 답변 모두에서 난독 화 해서는 안되는 많은 도메인 이름이 있습니다.
MadHatter는

1
나는 또한 그것에 혼란 스러웠지만 시도했다. 잠시 동안 나는 그것이 일종의 와일드 카드 나 그런지 확신했다 ... 내가 당신이 그 도메인의 DNS 관리자라는 것을 알 때까지 당신은 레코드를 넣을 수 있었다! 대답을 읽는 것만으로 쉽게 얻을 수있는 것은 아니므로 일반적으로 @HomoTechsual과 관련이 있습니다. 문제는 나중에 레코드를 제거하거나 도메인 이동 등을 제거 할 수 있으며이 답변은 더 이상 작동하지 않는다는 것입니다. (미국 이름에 대한 내 자신의 예와 똑같이 말할 수 있습니다). 그럼에도 불구하고 공개 DNS에 개인 IP 주소를 게시하는 것은 좋은 생각이 아닙니다. ;-)
Patrick Mevzek

2

신뢰할 수있는 DNS 서버를 직접 쿼리하는 경우 문제없이 답변을 얻을 수 있습니다.

그러나 유효한 캐시가없는 다른 DNS 서버를 통해 쿼리하는 경우 올바른 답변을 얻을 수 없습니다. 쿼리 intermediate.example.com하면 NXDOMAIN오류가 발생합니다.


4
결과가 아니 NXDOMAIN어야하며 NOERROR코드와 빈 답변 섹션이 있어야합니다.
Barmar

4
나는이 대답의 요점을 보지 못합니다. intermediate.example.com아무것도 사용되지 않는 경우 누군가가 쿼리해야 할 이유 가 없습니다. 따라서 오류를 반환하더라도 (그렇지 않음) 어떤 차이가 있습니까?
Barmar

5
당신은받지 않습니다 NXDOMAIN, 당신은 얻을 NOERROR. 이는 DNS 계층 구조에 존재하지만 요청 된 유형의 레코드가없는 노드에 대한 응답입니다.
Barmar

3
도메인이 존재하더라도 도메인과 다른 레코드 유형을 요청하면 해당 응답을받습니다. 그것을 가지고 예를 들어, 경우 NS기록을하지만, 당신이 물어 A기록, 당신은 얻을 것이다 NOERROR빈 응답.
Barmar

4
이것은 잘못이다. RFC 8020 당 권위있는 네임 서버 응답하는 경우 NXDOMAINintermediate.example.com그것은 아무것도 "아래에"이 없음을 의미 한 다음 다음 leaf.intermediate.example.com존재할 수 없습니다. 일부 공격적인 재귀 해결 프로그램은이를 캐시하고 자체적으로 항목을 공제 할 수도 있습니다.
Patrick Mevzek

1

질문에 직접 대답하기 위해 실제로 사용하지 않는 중간 이름에 대한 레코드를 추가 할 필요는 없지만 해당 이름이 존재하지는 않습니다.

이 이름이 존재하는지 여부에 관해서는 실제로 간단하고 직관적 인 답변을 제공하고자하는 완전히 별개의 질문입니다.

DNS는 트리 구조이며 도메인 이름의 각 레이블은 트리 노드입니다. 예를 들어 , ``및``(루트 노드) www.example.com.라는 레이블이 www있는데 example, com루트까지 루트를 형성하는 트리 노드입니다.

DNS의 이러한 근본적인 특성을 명백하게 만드는 것은 거의 항상 DNS 데이터를 관리 할 때 볼 트리가없고 일반적으로 트리 노드 자체와 직접 작업하지 않고 대신 일반적으로 어떤 레코드의 목록을 작성한다는 것입니다 다른 도메인 이름에 존재해야하는 데이터 (위의 트리 경로)

어떤이 평평 목록을 사용할 때 발생하는 DNS 서버 소프트웨어가 기존 레코드를 기반으로 트리를 구성한다는 것입니다, 그리고에 대한 레코드가 예를 들어 기록을 가지고있는 노드 사이의 간격 (있는 경우 foo.bar.example.com.example.com.아닌이bar.example.com. 이 단순히 빈 트리 고려는) 노드. 즉, 이들은 실제로 존재하는 도메인 이름 / 노드이며 트리가 손상되지 않았으며 이러한 노드에는 관련 데이터가 없습니다.

따라서이 빈 노드 중 하나를 쿼리 하면 요청 된 레코드 유형이이 노드에 존재하지 않는다는 NODATA응답 ( 권한 NOERROR+ SOA의 권한 + )이 표시됩니다. 실제로 존재하지 않는 이름을 쿼리 NXDOMAIN하면 요청한 도메인 이름이 트리에 존재하지 않는다는 응답이 표시됩니다.

이제, 세부적인 내용을 원한다면 Patrick Mevzek의 매우 철저한 답변을 읽으십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.