FreeBSD와 친구가 되어보세요

FreeBSD와 친구가 되어보세요

우리는 FreeBSD 시스템에 정적 ARP 항목을 추가하려고 합니다. 이는 예를 들어 다음에 적용됩니다.

arp -S 172.16.16.9 11:54:33:A8:B2:6B

. 재부팅 후에도 유지되도록 이를 시작 스크립트에 추가했습니다. 여태까지는 그런대로 잘됐다.

그러나 물리적 링크가 순환되면 영구 ARP 항목도 플러시됩니다. 아는 사람 있나요?

ㅏ.이를 예방하는 좋은 방법이나

비.링크를 다시 추가하는 좋은 방법 또는

씨.더 좋은 방법이 있나요?

답변1

FreeBSD와 친구가 되어보세요

당신은 부분적으로 올바른 길을 가고있는 것 같습니다. 나는 당신이 Unix에 대해 많이 알고 있지만 실제 FreeBSD 시스템에 대해서는 많이 알지 못한다고 생각합니다. 나는 이것이 FreeBSD의 일반적인 rc.d 사용자와 약간 다르게 처리하기 때문이라고 생각합니다.

저는 개인적으로 arp가 누락된 이유를 자세히 파악하고 싶기 때문에 이 질문이 약간 약하다고 생각합니다. 하지만 우리가 얻는 정보는 거의 없습니다. 대신 우리는 성급하게 결론을 내립니다. 그러나 그들은 FreeBSD에서 작업을 수행하는 방법에 대해 몇 가지 흥미로운 질문을 제기합니다. 주의할 점은 렌치를 망치로 사용하게 될 수도 있다는 점입니다.

rc 스크립트 작성

FreeBSD 시작 스크립트가 여기에 있지만 /etc/rc.d해당 디렉토리를 운영 체제에 남겨두고 거기에 아무것도 생성해서는 안 됩니다. 그렇지 않으면 업데이트 중에 콘텐츠를 덮어쓸 수 있습니다. 자신만의 시작/데몬/서비스 스크립트를 작성하고 싶다면 가장 좋은 곳은/usr/local/etc/rc.d

권장 파일 위치는 다음에 설명되어 있습니다.언덕

처음부터 모든 것을 작성하는 대신 해당 기능에 대해 읽으면 많은 도우미 기능을 얻을 수 있습니다.BSD의 실용적인 rc.d 스크립트

/etc/rc.conf.d/*

댓글로 가능 여부를 문의하셨습니다 /etc/rc.conf.d/*.제발이렇게 하지 마십시오. 여기에 있는 파일은 시작 시 가져오지만 이 디렉토리의 목적은 구성 설정이 있는 작은 조각을 포함하는 것입니다(참조rc.conf). 대부분의 사람들은 이 파일을 사용하여 시스템 옵션을 구성합니다. 그러나 일반적이지는 않지만 /etc/rc.conf작은 섹션으로 나누어서 넣을 수 있습니다 ./etc/rc.conf.d

좀 더 일반적인 시작 스크립트를 넣는 것이 더 나을 것입니다. /etc/rc.local여전히 지원됩니다. 하지만 여전히 적절한 rc 스크립트를 만들어서 넣는 것이 좋습니다./usr/local/etc/rc.d

rc 스크립트를 완전히 무시하려는 경우 부팅 시 일반 스크립트를 시작하는 또 다른 일반적인 방법은 @reboot 키워드를 사용하는 것입니다.예약 된 일들

그러나 기능이 이미 있으므로 새 rc 스크립트를 만들 필요가 없다고 말하고 싶습니다.

정적 ARP

정적 arp는 실제로 잘 문서화되어 있지만 매우 간단합니다. "누락된" 문서는 rc 스크립트가 처리되는 방식일 수 있습니다. 에 기록되어 있어요rc.conf:

 static_arp_pairs
     (str) Set to the list of static ARP pairs that are to be
     added at system boot time.  For each whitespace separated
     element in the value, a static_arp_<element> variable is
     assumed to exist whose contents will later be passed to a
     ``arp -S'' operation.  For example

     static_arp_pairs="gw"
     static_arp_gw="192.168.1.1 00:01:02:03:04:05"

이는 /etc/rc.conf에 다음 행을 추가하여 3개의 정적 arp 항목을 추가할 수 있음을 의미합니다.시스템 리소스 라이브러리주문하다):

static_arp_pairs="a b c"
static_arp_a="1.2.3.4 11:22:33:44:55:66"
static_arp_b="1.2.3.5 22:33:44:55:66:77"
static_arp_c="1.2.3.6 33:44:55:66:77:88"

또는 특정 상황에 따라:

static_arp_pairs="myarp"
static_arp_myarp="172.16.16.9 11:54:33:A8:B2:6B"

이를 처리하는 스크립트는 운영 체제의 일부이며 그 안에 위치하며 /etc/rc.d/static_arp매우 간단합니다. "시작" 및 "중지" 명령만 지원합니다.

다음을 사용하여 어디에서나 호출할 수 있습니다.

/etc/rc.d/static_arp start

그러나 나는 사용하는 것을 선호합니다제공하다주문하다:

service static_arp start

어떤 이유로든 편집/변경하고 싶다면 /etc/rc.d/static_arp그렇게 하지 마세요! 루트는 전능하며 원하는 것을 할 수 있습니다. 그러나 대체될 위험이 있습니다. 당신이 해야 할 일은 cp /etc/rc.d/static_arp /usr/local/etc/rc.d/mystatic_arp수정된 버전을 거기에 보관하는 것입니다. 이름 변경에 주의해서 스크립트에 반영되는지 확인해보세요!

물리적 링크 회수

다른 시스템에 익숙하다면 ifconfig를 사용하여 인터페이스를 켜거나 끌 수도 있습니다. 하지만 FreeBSD에서는 다음을 사용하는 것을 고려해야 합니다:

service netif restart <interface>

솔직히 말해서 이것이 static_arp도 가져오는지는 테스트하지 않았습니다. 아니면 비슷한 것:

service netif stop <interface>
...
service netif start <interface>
service routing restart
service static_arp start

그러나 물리적 링크를 루핑하면 케이블이 연결 해제될 수 있습니까? 이번에도 arp 테이블에 무슨 일이 일어나는지 잘 모르겠습니다. 아직 관리상 해당 인터페이스를 내려놓지 않았기 때문에 여전히 존재하기를 바랍니다.

고쳐 쓰다: @namezero는 static_arp를 사용하여 설정된 arp가 물리적인 연결 끊김에도 불구하고 유지된다는 의견을 확인했습니다.

그러나 귀하의 상황을 완전히 이해하려면 이를 더 자세히 조사해야 합니다. 이것이 내가 얻을 수 있는 가장 가까운 대답이다. "a. 이것을 방지하는 좋은 방법"

예약 된 일들

물리적 링크에 대한 알림을 받지 못한 경우 이를 모니터링하는 것보다 더 좋은 방법은 없다고 생각합니다. 스크립트를 단순하게 유지한다면 일반 cron에 그대로 둘 수 있습니다.

개발자들이 구출하러 온다

운영 체제의 변경 사항을 확인할 수 있다면 앞으로 좋은 길을 찾을 수 있습니다. 장치 상태 변경 데몬개발자편리합니다. 귀하의 설명이 누락되었으므로 조치를 취해야 할 LINK_UP 또는 LINK_DOWN이 있다고 가정하겠습니다.

다음 내용으로 /etc/devd/interface.conf 파일을 만듭니다.

notify 0 {
    match "system"        "IFNET";
    match "subsystem"     "(em0|em1)";
    match "type"          "LINK_DOWN";
    action "/usr/local/sbin/alertme.sh $subsystem"
}

네트워크 인터페이스 em0 및 em1을 알려줍니다.

따라서 다음과 같이 간단할 수 있습니다.

notify 0 {
    match "system"        "IFNET";
    match "subsystem"     "(em0|em1)";
    match "type"          "LINK_UP";
    action "/etc/rc.d/static_arp start"
}

그러나 arp 항목이 누락된 이유를 찾는 데 더 많은 시간을 할애해야 하기 때문에 이것은 나에게 약간 귀찮은 일이 됩니다. 하지만 이러한 다양한 가이드를 통해 여러분이 "일부" 방향으로 나아갈 수 있기를 바랍니다.

일반화하다

FreeBSD를 사용하여 더 행복한 삶을 사는 방법을 간략하게 설명하는 최종 후보 목록이 나왔습니다.

관련 정보