읽기 전용 미디어에서 부팅되는 네트워크 인터페이스 이름을 구성하는 방법은 무엇입니까?

Carsten Scholtes

Ubuntu 12.04 시스템에서는 .NET에서 생성 된 것과 같은 udev 규칙을 사용하여 (물리적) 네트워크 인터페이스 (예 : eth0, eth1, ...)의 이름을 구성하려고합니다 /etc/udev/rules.d/70-persistent-net.rules. 부팅 매체가 읽기 전용이지만, 향후 부팅을 위해 이러한 규칙을 지속적으로 (재) 구성 할 수 있기를 원합니다 (예 : 네트워크 카드 교체 후). 지속성을 위해 규칙을 (쓰기 가능한) 로컬 하드 디스크 (읽기 전용 부팅 매체와 다름)에 저장하려고합니다.

문제는 저장된 규칙에 대해 충분히 일찍 udev에 알리는 방법 인 것 같습니다. 분명히 저장된 규칙이있는 로컬 하드 디스크가 마운트되기 전에는 이런 일이 발생할 수 없습니다. 디스크 마운트는 로컬 하드 디스크 장치를 인식하는 udev에 따라 다릅니다. 동시에 udev는 네트워크 인터페이스를 인식하고 구성을 트리거합니다 (잠재적으로 로컬 하드 디스크의 규칙이 적용되기 전에).

필요한 초기화는 부팅 중에 어떻게 올바르게 조정됩니까?

Carsten Scholtes

세 가지 새로운 신생 작업을 사용하는 현재 솔루션이 작동하는 것으로 보입니다 (댓글 부탁드립니다).

  1. 우리는 새로운 신출내기 작업을 사용하여 /etc/init/hold-interfaces.conf(신출내기 작업에서 네트워크 인터페이스의 구성을 지연 /etc/init/network-interface.conf저장된 네트워크 규칙 (에 설치 될 때까지) /etc/udev/rules.d/71-persistent-net.rules/etc/중 중첩이었다 initrd/initA를 tmpfswriteability에 대한).

    # /etc/init/hold-interfaces.conf
    
    start on starting network-interface and started mark-configured
    
    instance holding${INTERFACE:+/}${INTERFACE:-}
    
    task
    
    exec :
    
    • start on조건이 필요합니다 starting network-interface. 이것은 기존 작업 파일 (이 경우 /etc/init/network-interface.conf) 을 수정하지 않고 upstart 작업이 시작되는 것을 금지하는 일반적인 방법입니다. Upstart Cookbook .

    • network-interface작업 의 개별 인스턴스 (각 인터페이스에 하나씩)가 있으므로 해당 인스턴스도 있어야합니다 hold-interfaces. 따라서 instance선언 (에서 찾은 것과 유사 /etc/init/network-interface-security.conf)입니다.

    • start on조건도 필요합니다 started mark-configured. 이는 네트워크 규칙이 업데이트되었으며 인터페이스 초기화가 계속 될 수 있음을 나타냅니다. upstart 이벤트가 생성 될 때까지 직접 기다릴 수는 없습니다. 이러한 이벤트는의 단일 인스턴스 만 hold-interfaces계속 하도록 허용합니다 . 권장되는 해결 방법은 전용 업 스타트 작업 /etc/init/mark-configured.conf( 이 경우 (Cf. LP : # 447654 ))을 사용하여 일종의 지속적인 이벤트를 시뮬레이션하는 것입니다 .

  2. 새로운 upstart 작업 /etc/init/mark-configured.conf은 모든 네트워크 구성 파일이 업데이트되었음을 ​​지속적으로 표시합니다.

    start on network-rules-ready
    
    task
    
    exec :
    
    • network-rules-ready이 작업을 시작하려면 단일 이벤트 로 충분합니다. 그 후 작업 mark-configured결과적으로 started의 대기 인스턴스도 해제하는 것으로 알려져 있습니다 .hold-interfacesnetwork-interface
  3. 세 번째 새로운 upstart 작업 /etc/init/configure_interfaces.conf은 네트워크 규칙을 설치하고 지연된 network-interface작업을 중지하고 (이전 네트워크 규칙의 구성 데이터로 시작될 수 있기 때문에) 해제 이벤트를 내보내고 네트워크 장치를 추가하는 모든 udev 이벤트를 다시 트리거합니다.

    # /etc/init/configure_interfaces.conf
    
    start on local-filesystems
    
    task
    
    script
        find_and_mount_local_hard_disk # abbreviated
        install_stored_rules_and_other_network_configurations # abbreviated
    
        udevadm control --reload-rules
    
        # Stop all active network-interface upstart jobs (with data from old rules)
        stop_active_network_interface_jobs # abbreviated, using: initctl stop network-interface <interface>
    
        # Allow next network-interface jobs
        # (with data from stored rules) to complete.
        initctl emit --no-wait network-rules-ready
    
        # Trigger udev recognition.
        udevadm trigger --action='add' --subsystem-match='net'
    end script
    

세 개의 네트워크 인터페이스가있는 테스트 시스템에서 이것은 작동하는 것처럼 보입니다. 반면에 때때로 / 적어도 다른 시스템에서 실패하지 않을 수 있는지 불확실합니다.

  1. find_and_mount_local_hard_disk실행할 때 모든 로컬 하드 디스크 장치를 사용할 수 있다는 보장이 있습니까?

  2. 일부 네트워크 장치가 인식되지 않을 수있는 경쟁 조건이 있습니까? (예 : 새 udev 규칙을 읽기 전에 커널이 새 장치를 udev에 전달 network-interface하여 이전 규칙을 사용하여 upstart 작업 시작할 수 있습니다. upstart가이 작업을 중지하기 위해 인식 할 때까지 시간이 걸릴 수 있습니다. 가능합니까? 한편 udev 새 규칙을로드 할 수 있고 network-interface작업을 중지 하면 새로운 작업이 누락되고 network-rules-ready나중에 장치가 여전히 이전 속성을 사용하여 시작될 수 있도록 신호 가 방출됩니다.)

  3. 신생 작업을 어떻게 /etc/init/network-interface-security.conf적절하게 지연 / 제어 할 수 있습니까? 다른 작업이나 이벤트가 지연 / 재 트리거되어야합니까?

    • /etc/init/network-interface-security.conf영향을받는 네트워크 구성이 네트워크 규칙과 함께 충분히 일찍 설치된 경우 작업 을 적절하게 지연해야합니다.
    • 또한 보류 된 인터페이스가 auto에서 /etc/network/interfaces같이 구성된 경우 신호가 지연 static-network-up됩니다 ( /etc/network/if-up.d/upstart모든 auto인터페이스가 가동 후에서 방출 됨 ). 따라서 대부분의 네트워크 종속 작업은 SysV init 스크립트 시작 (에서 트리거 됨 /etc/init/rc-sysinit.conf)을 포함하여 적절하게 지연되어야합니다 .
  4. 다른 문제?

(로컬 하드 디스크가 마운트되고 새 네트워크 규칙이 적용될 때까지 커널, udev, upstart 또는 기타 기능을 통해 모든 네트워크 장치 (및 종속 시작 작업)의 구성을 지연하는 더 쉬운 방법이 있습니까?)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

콘솔에서 네트워크 인터페이스간에 전환하는 방법은 무엇입니까?

분류에서Dev

콘솔에서 네트워크 인터페이스간에 전환하는 방법은 무엇입니까?

분류에서Dev

DHCP에 대한 기본 네트워크 인터페이스를 설정하는 방법은 무엇입니까?

분류에서Dev

Linux 네트워크 인터페이스에서 대역폭을 조절하는 방법은 무엇입니까?

분류에서Dev

ARM Powershell을 사용하여 새로 생성 된 VM에 네트워크 인터페이스를 할당하는 방법은 무엇입니까?

분류에서Dev

FreeBSD에서 인터페이스 당 네트워크 트래픽을 보는 방법은 무엇입니까?

분류에서Dev

네트워크에서 컴퓨터 이름을 숨기는 방법은 무엇입니까? (OS X 10.6)

분류에서Dev

네트워크 인터페이스에서 DNS 서버를 변경하는 방법은 무엇입니까?

분류에서Dev

네트워크 인터페이스에서 DNS 서버를 변경하는 방법은 무엇입니까?

분류에서Dev

Predictable Names 체계에서 사용하는 네트워크 인터페이스의 명명 체계 충돌을 해결하는 방법은 무엇입니까?

분류에서Dev

Ubuntu Server 18.04에서 네트워크 인터페이스 구성을 재설정하는 방법은 무엇입니까?

분류에서Dev

부팅시 네트워크 인터페이스를 다시 매핑하는 방법은 무엇입니까?

분류에서Dev

Perl 모듈 테스트에서 네트워크 가용성을 확인하는 방법은 무엇입니까?

분류에서Dev

Ubuntu에서 가상 네트워크 인터페이스를 만드는 방법은 무엇입니까?

분류에서Dev

가상 박스의 우분투에서 네트워크 인터페이스를 구성하는 방법은 무엇입니까?

분류에서Dev

인터페이스에서 인터페이스의 읽기 전용 속성을 모의하는 방법은 이미 모의되었습니다.

분류에서Dev

Windows에서 배치 스크립트를 사용하여 eth0 / eth1 / eth2 여부를 네트워크 인터페이스 이름을 얻는 방법은 무엇입니까?

분류에서Dev

Linux 네트워킹 : 두 번째 IPv4 인터페이스를 통해 인터넷에서 들어오는 IPv6 연결을 로컬 네트워크의 다른 컴퓨터로 전달하는 방법은 무엇입니까?

분류에서Dev

네트워크 인터페이스가 기본이된다는 것은 무엇을 의미합니까?

분류에서Dev

Ubuntu 17.04 : Path를 기반으로 USB 네트워크 인터페이스의 이름을 바꾸는 방법은 무엇입니까? (MAC 기반 아님)

분류에서Dev

Ubuntu 17.04 : Path를 기반으로 USB 네트워크 인터페이스의 이름을 바꾸는 방법은 무엇입니까? (MAC 기반 아님)

분류에서Dev

호스트와 동일한 네트워크에서 macvlan 네트워크 인터페이스를 만드는 방법은 무엇입니까?

분류에서Dev

배치 파일을 사용하여 네트워크 위치의 파일에서 버전 번호를 읽고 인쇄하는 방법은 무엇입니까?

분류에서Dev

Python에서 ElasticSearch 용 읽기 전용 클라이언트를 생성하는 방법은 무엇입니까?

분류에서Dev

ArchLinux (systemd)에서 플러그 형 이더넷 어댑터 용 네트워크를 구성하는 방법은 무엇입니까?

분류에서Dev

연결중인 네트워크 인터페이스 VPN을 확인하는 방법은 무엇입니까?

분류에서Dev

각 네트워크 네임 스페이스에서 새 인스턴스 인 Linux 커널 모듈을 작성하는 방법은 무엇입니까?

분류에서Dev

Windows 10에서 일일 (네트워크) 데이터 사용량을 보는 방법은 무엇입니까?

분류에서Dev

터미널을 사용하여 네트워크 상태를 확인하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    콘솔에서 네트워크 인터페이스간에 전환하는 방법은 무엇입니까?

  2. 2

    콘솔에서 네트워크 인터페이스간에 전환하는 방법은 무엇입니까?

  3. 3

    DHCP에 대한 기본 네트워크 인터페이스를 설정하는 방법은 무엇입니까?

  4. 4

    Linux 네트워크 인터페이스에서 대역폭을 조절하는 방법은 무엇입니까?

  5. 5

    ARM Powershell을 사용하여 새로 생성 된 VM에 네트워크 인터페이스를 할당하는 방법은 무엇입니까?

  6. 6

    FreeBSD에서 인터페이스 당 네트워크 트래픽을 보는 방법은 무엇입니까?

  7. 7

    네트워크에서 컴퓨터 이름을 숨기는 방법은 무엇입니까? (OS X 10.6)

  8. 8

    네트워크 인터페이스에서 DNS 서버를 변경하는 방법은 무엇입니까?

  9. 9

    네트워크 인터페이스에서 DNS 서버를 변경하는 방법은 무엇입니까?

  10. 10

    Predictable Names 체계에서 사용하는 네트워크 인터페이스의 명명 체계 충돌을 해결하는 방법은 무엇입니까?

  11. 11

    Ubuntu Server 18.04에서 네트워크 인터페이스 구성을 재설정하는 방법은 무엇입니까?

  12. 12

    부팅시 네트워크 인터페이스를 다시 매핑하는 방법은 무엇입니까?

  13. 13

    Perl 모듈 테스트에서 네트워크 가용성을 확인하는 방법은 무엇입니까?

  14. 14

    Ubuntu에서 가상 네트워크 인터페이스를 만드는 방법은 무엇입니까?

  15. 15

    가상 박스의 우분투에서 네트워크 인터페이스를 구성하는 방법은 무엇입니까?

  16. 16

    인터페이스에서 인터페이스의 읽기 전용 속성을 모의하는 방법은 이미 모의되었습니다.

  17. 17

    Windows에서 배치 스크립트를 사용하여 eth0 / eth1 / eth2 여부를 네트워크 인터페이스 이름을 얻는 방법은 무엇입니까?

  18. 18

    Linux 네트워킹 : 두 번째 IPv4 인터페이스를 통해 인터넷에서 들어오는 IPv6 연결을 로컬 네트워크의 다른 컴퓨터로 전달하는 방법은 무엇입니까?

  19. 19

    네트워크 인터페이스가 기본이된다는 것은 무엇을 의미합니까?

  20. 20

    Ubuntu 17.04 : Path를 기반으로 USB 네트워크 인터페이스의 이름을 바꾸는 방법은 무엇입니까? (MAC 기반 아님)

  21. 21

    Ubuntu 17.04 : Path를 기반으로 USB 네트워크 인터페이스의 이름을 바꾸는 방법은 무엇입니까? (MAC 기반 아님)

  22. 22

    호스트와 동일한 네트워크에서 macvlan 네트워크 인터페이스를 만드는 방법은 무엇입니까?

  23. 23

    배치 파일을 사용하여 네트워크 위치의 파일에서 버전 번호를 읽고 인쇄하는 방법은 무엇입니까?

  24. 24

    Python에서 ElasticSearch 용 읽기 전용 클라이언트를 생성하는 방법은 무엇입니까?

  25. 25

    ArchLinux (systemd)에서 플러그 형 이더넷 어댑터 용 네트워크를 구성하는 방법은 무엇입니까?

  26. 26

    연결중인 네트워크 인터페이스 VPN을 확인하는 방법은 무엇입니까?

  27. 27

    각 네트워크 네임 스페이스에서 새 인스턴스 인 Linux 커널 모듈을 작성하는 방법은 무엇입니까?

  28. 28

    Windows 10에서 일일 (네트워크) 데이터 사용량을 보는 방법은 무엇입니까?

  29. 29

    터미널을 사용하여 네트워크 상태를 확인하는 방법은 무엇입니까?

뜨겁다태그

보관