특정 네트워크 인터페이스에 대해 "systemd-resolve"구성을 유지하는 방법은 무엇입니까?


0

우분투 데스크톱을 Bionic Beaver로 업그레이드했습니다. systemd-resolve . 이 변경으로 인해 LXD DNS 확인 작업이 중단되었습니다.

LXD 컨테이너를 검색 가능하게 만들기 위해 아래 명령을 실행할 수 있습니다. IP가 10.78.38.1 의 IP입니다. lxdbr0 다리.

$ sudo systemd-resolve --interface lxdbr0 --set-dns 10.78.38.1 --set-domain lxd

이를 통해 LXD 컨테이너 이름을 알 수 있으며 구성은 다음과 같습니다.

$ systemd-resolve --status
.
.
.
Link 10 (lxdbr0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 10.78.38.1
          DNS Domain: lxd
.
.
.

그러나 시스템 재부팅 후에이 구성은 사라집니다.

$ systemd-resolve --status
.
.
.
Link 10 (lxdbr0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
.
.
.

위의 내용을 계속 유지하기 위해 systemd-resolve 맨 페이지 http://manpages.ubuntu.com/manpages/bionic/man8/systemd-resolved.service.8.html . 그것은 /etc/systemd/resolved.conf.d/lxd.conf 파일을 만들 수 있지만 특정 NIC에 특정한 구성을 만들 수있는 매개 변수가 없습니다.

답변:


0

나는이 질문이 2 개월 째 여기에 있다는 것을 알고 있지만 어쩌면 여전히 답이 필요할까요?

1) Systemd-networkd는 (최소한) 3 개 이상의 디렉토리에 네트워크 구성을 저장합니다. 당신과 가장 관련이있는 것 :

/etc/systemd/network/ 

(다른 2 즉, / lib / s / n 및 / run / s / n보다 우선합니다.

다음과 유사한 텍스트 파일을 만듭니다.

[Match]
Name=enp0s4

[Network]
DHCP=yes
DNS=192.168.1.1

그 디렉토리에있는 한 원하는 이름을 붙일 수 있습니다. 내 이름은 enp0s4.network입니다. 컨텐츠를 가져 오는 것은 결정적인 , 만약 당신이 틀린다면, 당신의 네트워킹이 적어도 그 인터페이스에서 작동을 멈추는 것처럼 나쁜 일이 일어난다. 어느 것이 쉽지 않은가, 나는 내 것을 엉망으로 만들었다. 그리고 그것을 나눠내는 데 시간이 걸렸다. 내 "서버"가 원격 데이터 센터가 아닌 다음 회의실에있는 것이 좋습니다.

예를 들어 다리를 설치하는 방법은 여기에서 읽어보십시오.

man systemd.network |grep -A 42 "Example 3"

거기에 주어진 예제와 코드 스 니펫은 다음과 같이 설정할 수 있습니다.

Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 10.78.38.1

DNS 도메인에 대한 구문이 확실하지 않은 경우 가능해야합니다. 맨 페이지는 30 페이지 길이입니다! 할 수 있다면, 건너 뛰십시오. "도메인 ="이 시스템을 망쳤습니다. 잘못된 것을 얻는 것이 나쁘고 개인적인 경험이라는 것을 알았습니다. :-) 그래서 올바른 구문을 찾거나 복구 할 수 없다면 넣지 마십시오.

회복은 또 하나의 포스트이지만 피곤합니다.

내가 사용한 참고 문헌은 다음과 같습니다.

네트워크가 실행 중인지 확인하는 방법 : https://superuser.com/questions/1187633/how-to-debug-systemd-networkd?rq=1#comment1807294_1187633

사용 중지 된 경우 사용 설정하는 방법 : https://askubuntu.com/posts/681768/revisions

다시 부팅하지 않고 systemd-resolver를 다시 시작하십시오.

sudo systemctl restart systemd-resolved

참고 사항 : Network Manager가 인터페이스를 처리하고 "관리되지 않는"상태로 유지하고 /etc/resolv.conf와 같은 플랫 파일 구성으로 실행하도록 systemd에 지시하는 방법이 있습니다. 그러나 나는 당신의 신발에 있다면 나는 그대로 작동하게 만들 것입니다. 그리고 저는 다른 인터페이스를 다른 목적으로 구성하려고 시도하고 있지만 모든 정보가 필요했습니다. 위에서 나 자신을 돕기 위해 나는 나눌 것을 생각했다. 일시적으로 변경하는 방법을 공유 했으므로 유용합니다. :-)

HTH


0

그럴듯한 소리는 들지만 효과가없는 것처럼 보입니다.

링크 된 맨 페이지에 따르면 man 8 systemd-resolved.service , 당신은 링크 당 설정 파일을 사용해야한다. /etc/systemd/network:

연결되는 DNS 서버는 다음 위치의 전역 설정에서 결정됩니다. /etc/systemd/resolved.conf, 링크 별 정적 설정 /etc/systemd/network/*.network 파일, DHCP를 통해 수신 된 링크 별 동적 설정 및 다른 시스템 서비스에서 사용할 수있는 모든 DNS 서버 정보.

구성을 영구적으로 유지하려면 파일을 만들어야합니다. /etc/systemd/network/lxdbr0.conf:

[Match]
Name=lxdbr0

[Resolve]
DNS=10.78.38.1
Domains=lxd

이 설정은 그럴듯하지만이 설정은 LXD를 사용하는 시스템에 영향을 미치지 않는 것 같습니다. 초기 질문을 게시 한 후 부팅 할 때 실행되는 LXD 용 DNS를 구성하기 위해 앞에서 설명한 명령을 실행하는 Systemd 서비스를 만들었습니다. lxdbr0 인터페이스가 때로는 아직 존재하지 않기 때문에 안정적으로 작동하지 않습니다. 따라서 사용자 지정 Systemd 서비스를 수동으로 시작해야합니다. 이것이 올바른 방법 인 것 같지만 이것이 LXD와 함께 작동하지 않는 솔루션의 이유 일 수도 있습니다 ...
quat

당신 말이 맞아요. 하지만 어쨌든 나는 원하는 출력을 얻을 수 있었다. systemd-resolve --status 그 명령을 입력하지 않고. 다른 문제는 컨테이너 내부에서 이름 해석이 작동하지 않는다는 것입니다. 더 나은 해결책을 찾으면 내 대답을 고칠 것입니다.
ctx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.