ip 명령을 지속시키는 방법

ip 명령을 지속시키는 방법

더미 링크를 추가하고, 링크에 일부 주소를 추가하고, 링크에 일부 경로를 추가하는 스크립트(질문 하단)가 있습니다.

ip link, ip addr및 명령이 지속되도록 하려면 어떻게 해야 합니까 ip route?

저는 Debian Stretch를 사용하고 있으며 NetworkManager가 설치되어 있습니다.

아이디어 1:

이 파일을 넣으면 /etc/network/if-up.d/컴퓨터가 시작될 때 호출될 수 있습니다. /etc/NetworkManager/dispatcher.d/01ifupdown이 디렉토리를 가리키는 것 같습니다.

고쳐 쓰다:해봤는데 좋은 생각이 아니네요

아이디어 2:

이 파일을 다른 구성 언어로 변환하여 에 넣어야 할 수도 있지만 /etc/network/interfaces.d/지금까지 이 파일을 구성한 예에서는 장치가 존재한다고 가정합니다. 아직 동등한 것을 찾지 못했습니다 ip link add mocknet type dummy.

파일은 auto줄 시작 부분에 있는 키워드를 사용하여 물리적 인터페이스( auto mocknet)를 식별하지만 mocknet아직 존재하지 않습니다.

작업 스크립트

ip link add mocknet type dummy

ip addr add 10.10.1.1/24 dev mocknet
ip addr add 10.10.2.1/24 dev mocknet
ip addr add 10.10.3.1/24 dev mocknet
ip addr add 10.10.4.1/24 dev mocknet
ip addr add 10.10.5.1/24 dev mocknet
ip addr add 10.10.6.1/24 dev mocknet
ip addr add 10.10.7.1/24 dev mocknet
ip addr add 10.10.8.1/24 dev mocknet
ip addr add 10.10.9.1/24 dev mocknet

ip link set mocknet up

ip route del 10.10.1.0/24 
ip route del 10.10.2.0/24 
ip route del 10.10.3.0/24 
ip route del 10.10.4.0/24 
ip route del 10.10.5.0/24 
ip route del 10.10.6.0/24 
ip route del 10.10.7.0/24 
ip route del 10.10.8.0/24 
ip route del 10.10.9.0/24 

ip route add 10.10.1.0/24 dev mocknet proto kernel scope link src 10.10.1.1 metric 6000
ip route add 10.10.2.0/24 dev mocknet proto kernel scope link src 10.10.2.1 metric 6000
ip route add 10.10.3.0/24 dev mocknet proto kernel scope link src 10.10.3.1 metric 6000
ip route add 10.10.4.0/24 dev mocknet proto kernel scope link src 10.10.4.1 metric 6000
ip route add 10.10.5.0/24 dev mocknet proto kernel scope link src 10.10.5.1 metric 6000
ip route add 10.10.6.0/24 dev mocknet proto kernel scope link src 10.10.6.1 metric 6000
ip route add 10.10.7.0/24 dev mocknet proto kernel scope link src 10.10.7.1 metric 6000
ip route add 10.10.8.0/24 dev mocknet proto kernel scope link src 10.10.8.1 metric 6000
ip route add 10.10.9.0/24 dev mocknet proto kernel scope link src 10.10.9.1 metric 6000

답변1

아이디어 2맞다. 게다가 이 간단한 스크립트를 올바른 파일로 변환하는 것도 어렵지 않습니다. 여기서 한 가지 놀라운 점은 이것이 ip link set mocknet up자동이라는 것입니다. man interfaces좋은 정보를 제공합니다. 작업 문서는 다음과 같습니다.

/etc/network/interfaces.d/mocknet:

# Mocknet: 
#    A mock network meant to replace parts of the real one if they don't exist.
# 
# We are creating a network sink called mocknet. It's a dummy, so data sent to 
# this is ignored. This is useful for when we want to run the simulation without
# all other machines connected. If a machine doesn't exist, then this prevents 
# that packet from being sent to the default route and spamming the LAN.

auto mocknet
iface mocknet inet manual
#
#   This creates the dummy interface.  Dummy means that data sent here will be 
#   ignored.
    pre-up /bin/ip link add mocknet type dummy
#
#   Here we add all of the IP adresses that we might have as host on the FFS.  
#   This guarantees that we can bind to these addresses for Rx and helps us make 
#   a route for Tx
    up /bin/ip addr add 10.10.1.1/24 dev mocknet
    up /bin/ip addr add 10.10.2.1/24 dev mocknet
    up /bin/ip addr add 10.10.3.1/24 dev mocknet
    up /bin/ip addr add 10.10.4.1/24 dev mocknet
    up /bin/ip addr add 10.10.5.1/24 dev mocknet
    up /bin/ip addr add 10.10.6.1/24 dev mocknet
    up /bin/ip addr add 10.10.7.1/24 dev mocknet
    up /bin/ip addr add 10.10.8.1/24 dev mocknet
    up /bin/ip addr add 10.10.9.1/24 dev mocknet
#
#   The previous line created some default routes. Those routes are super high 
#   priority (metric=0) so they override real connections if they exist. We 
#   don't want that so here we need to delete the default routes and then add 
#   good versions. Now if a packet is sent to something in this ip range it goes 
#   to mocknet.  `metric 6000` sets the route priority super low (a bigger 
#   number is lower priority so if it conflicts with a real device, that real 
#   device will take priority and data will be sent and not ignored.
    post-up /bin/ip route del 10.10.1.0/24 && /bin/ip route add 10.10.1.0/24 dev mocknet proto kernel scope link src 10.10.1.1 metric 6000
    post-up /bin/ip route del 10.10.2.0/24 && /bin/ip route add 10.10.2.0/24 dev mocknet proto kernel scope link src 10.10.2.1 metric 6000
    post-up /bin/ip route del 10.10.3.0/24 && /bin/ip route add 10.10.3.0/24 dev mocknet proto kernel scope link src 10.10.3.1 metric 6000
    post-up /bin/ip route del 10.10.4.0/24 && /bin/ip route add 10.10.4.0/24 dev mocknet proto kernel scope link src 10.10.4.1 metric 6000
    post-up /bin/ip route del 10.10.5.0/24 && /bin/ip route add 10.10.5.0/24 dev mocknet proto kernel scope link src 10.10.5.1 metric 6000
    post-up /bin/ip route del 10.10.6.0/24 && /bin/ip route add 10.10.6.0/24 dev mocknet proto kernel scope link src 10.10.6.1 metric 6000
    post-up /bin/ip route del 10.10.7.0/24 && /bin/ip route add 10.10.7.0/24 dev mocknet proto kernel scope link src 10.10.7.1 metric 6000
    post-up /bin/ip route del 10.10.8.0/24 && /bin/ip route add 10.10.8.0/24 dev mocknet proto kernel scope link src 10.10.8.1 metric 6000
    post-up /bin/ip route del 10.10.9.0/24 && /bin/ip route add 10.10.9.0/24 dev mocknet proto kernel scope link src 10.10.9.1 metric 6000
#
#   This cleans up the interface so it doesn't fail if we try to 
#   systemctl restart networking.
    post-down /bin/ip link del mocknet

/bin/ip이것이 "올바른" 방법인지 는 확실하지 않지만 모든 것이 작동하는 것 같습니다./sbin/ip

관련 정보