OpenVZ 7 하드웨어 노드를 사용하여 *모든* 컨테이너 유형에 대해 이름 서비스 캐싱을 수행하는 방법은 무엇입니까?

OpenVZ 7 하드웨어 노드를 사용하여 *모든* 컨테이너 유형에 대해 이름 서비스 캐싱을 수행하는 방법은 무엇입니까?

저는 몇 년 동안 OpenVZ 사용을 중단했는데, 이제 다시 돌아왔으니 복잡성이 더해져서 조금 당황스럽습니다. 나는 몇 시간 동안 이 간단한 작업에 갇혀 있었습니다.

하드웨어 노드를 로컬 DNS 캐시로 사용하고 싶습니다.모두컨테이너 유형(이 패러다임은 나에게 새로운 개념임), 호스트 및 브리지.

컨테이너만 있어요.

브리지 컨테이너와 호스트 전용 컨테이너를 dnsmasq각각 수신하도록 인터페이스를 성공적으로 구성했습니다 . 이 단계를 확인할 수 있으며 작동합니다.br0virbr0dig @interface <public host name>

작동하지 않는 것:

  • 모든 컨테이너의 이름 확인 시간 초과
  • 하드웨어 노드 주소를 ping해도 응답이 없습니다.

하드웨어 노드에서:

# prlsrvctl net list
Network ID        Type      Bound To       Bridge         Slave interfaces
Bridged           bridged   enp2s0         br0                           
Host-Only         host-only                virbr0                        

그리고 virbr0: 10.37.130.2/24그리고 br0:192.168.xx.5/28.

prlctl set <my test container @ 192.168.xx.4> --nameserver 10.37.130.2이름 확인은 없지만 이것을 실행하고 있습니다 .

생각하다규칙을 추가해야 하는데 iptables로컬 프로세스에도 규칙이 너무 많아요! 상식조차도 도움이 되지 않습니다. 두 인터페이스 모두에서 포트 53에서 UDP 패킷을 허용하는 규칙을 추가해 보았습니다... 말도 안 돼요, 다른 것이 있습니다.

무엇을 깨야할지 모르겠습니다.

  • dnsmasqDNS 요청이 수신되었는지 확실하지 않음
  • 답이 있을지 모르겠네요
  • 방화벽에 의해 응답이 차단되는지 모르겠습니다.

tcpdump방화벽 규칙을 추가하는지 여부에 관계없이 나에게 일어나는 일은 다음과 같습니다.

# tcpdump
tcpdump: WARNING: venet0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
23:03:20.876113 IP 192.168.xx.4.53894 > myhostname.local.domain: 32621+ A? google.com. (28)
23:03:25.875974 IP 192.168.xx.4.53894 > myhostname.local.domain: 32621+ A? google.com. (28)
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel

host google.com해당 명령을 사용하여 컨테이너에서 간단한 작업을 수행할 때 이런 일이 발생합니다 host.

해당 컨테이너에서:

# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=39 time=328 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=39 time=19.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=39 time=20.3 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=39 time=20.3 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=39 time=44.1 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=39 time=20.4 ms
^C
--- 8.8.8.8 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5002ms
rtt min/avg/max/mdev = 19.836/75.699/328.996/113.614 ms

그렇다면 왜... 방화벽에 이러한 규칙이 나열되어 있습니까?

-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT

실망스러울 정도로 복잡합니다.

관련 정보