네트워크 인터페이스가 다운된 경우:
ping 8.8.8.8
connect: Network is unreachable
멋지게 종료하기
커널이 ping에 특정 신호를 보내
므로 ping이 자체적으로 종료됩니다.
하지만 네트워크 인터페이스가 작동 중이고
iptables를 통한 모든 트래픽을 차단하면..
vi /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -j REJECT --reject-with icmp-net-unreachable
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT
그러나 핑은 종료되지 않습니다. 그리고 멈춰라.
ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.0.100 icmp_seq=1 Destination Net Unreachable
From 192.168.0.100 icmp_seq=1 Destination Net Unreachable
From 192.168.0.100 icmp_seq=1 Destination Net Unreachable
그것은 계속해서 진행됩니다.
나는 다른 것을 시도했다 --거부배너
예를 들어:
icmp-net-unreachable
icmp-host-unreachable
icmp-port-unreachable
icmp-proto-unreachable
icmp-net-prohibited
icmp-host-prohibited
icmp-admin-prohibited
그들 중 누구도 종료하라는 핑을 받을 수 없습니다.
내가 보고 싶은 것은
네트워크 인터페이스 연결이 끊어졌을 때 종료되는 것과 같은 방식으로 ping이 종료되는 것입니다.
iptables를 통해 이 작업을 수행할 수 없는 경우 ping 커널이 보내는 것과 동일한 신호를
보내기 위해 실행할 수 있는 명령이 있습니까
? "네트워크 인터페이스가 연결되지 않았습니다"라고 알려주나요?
(거짓말이겠지만 기본적으로는 저절로 종료되었으면 좋겠습니다.)
답변1
기본 옵션을 사용하면 패킷을 보낼 수 없는 한 Linux의 ping이 자체적으로 중지되지 않습니다.
패킷이 필터링된 경우 ping 명령은 계속해서 패킷을 보낼 수 있으며 해당 패킷은 네트워크 스택에서 삭제/거부됩니다.
자동으로 중지하려면 -c 옵션을 사용하면 됩니다. 예:
ping -c 4 8.8.8.8
이 경우 ping은 통과 여부에 관계없이 4개의 패킷 후에 중지됩니다.
다음은 공식 매뉴얼에서 발췌한 내용입니다.
-c count Stop after sending count ECHO_REQUEST packets. With deadline option, ping waits for count ECHO_REPLY packets, until the time‐ out expires.
답변2
이 질문을 SuperUser(이후 삭제됨)에 여러 번(다양한 형식으로) 게시했지만 답변을 얻지 못했으므로 접근 방식을 변경해야 할 수도 있습니다.
정기적으로 사용하는 경우 iptables
가능하면 언제든지 사용하십시오. 다른 옵션을 고려한다면 다음을 활용할 수도 있습니다.네트워크 네임스페이스논의이것질문. 따라서 일반적으로 "네트워크 없음"을 수행하고 이를 사용할 수 있어야 하는 프로세스에서 사용되는 또 다른 네임스페이스를 가질 수 있습니다. 이러한 프로세스를 사용하면 여전히 동일한 시간 초과 "문제"가 발생합니다. 또 다른 방법은 다음과 같은 것을 사용하는 것입니다.갑옷을 적용설명된 대로이 문제. 그러나 당신은 매우 안전하기를 원하기 때문에 Jada, Jada는 그것이 당신에게 선택 사항이 아닌 것 같습니다.
시스템이 시간 초과되는 데 걸리는 시간을 실제로 지정하지 않기 때문에 실제로 비정상적인 동작이 발생하는지 여부는 확실하지 않습니다.