
SuSE 서버가 부팅 프로세스를 마친 후 나 자신에게 으르렁거리는 소리를 보내고 싶습니다. 이 메시지를 받았습니다 socket_sendto(): unable to write to socket [101]: Network is unreachable in
.
네트워크에 연결할 수 있는지 명령줄에서 확인하고 그렇지 않은 경우를 기다리려면 어떻게 해야 합니까?
답변1
ping
외부 호스트에 대한 연결은 여러 가지 이유로 실패할 수 있으며 그 중 실제로 네트워크 상태에 대해 유용한 정보를 제공하는 것은 몇 가지에 불과합니다.
첫 번째 단계로 터미널 창을 열고 다음을 입력하세요.
ip route ls
다음과 같은 출력이 표시되어야 합니다.
shadur@equinox:~$ ip route ls
192.168.15.0/24 dev eth0 proto kernel scope link src 192.168.15.102
default via 192.168.15.1 dev eth0
이는 로컬 네트워크가 eth0
주소가 있는 이더넷 연결( )이고 192.168.15.0
나머지 인터넷에 액세스하는 데 사용하는 기본 게이트웨이를 에서 찾을 수 있음을 나타냅니다 192.168.15.1
.
ping
다음으로 해당 주소 로 시도해 보세요 .
shadur@equinox:~$ ping 192.168.15.1
PING 192.168.15.1 (192.168.15.1) 56(84) bytes of data.
64 bytes from 192.168.15.1: icmp_req=1 ttl=255 time=0.352 ms
64 bytes from 192.168.15.1: icmp_req=2 ttl=255 time=0.269 ms
^C
--- 192.168.15.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.269/0.310/0.352/0.045 ms
위와 비슷한 내용이 보이면 최소한 로컬 네트워크에는 문제가 없는 것입니다. 이 시점에서 traceroute
대상에 대한 연결이 실패할 수 있는 위치를 확인하는 것과 같은 고급 도구를 사용하여 조사를 시작할 수 있습니다 .
growl
그러나 실제로 무엇이 필요한지 Google에서 빠르게 확인한 후에 는 뭔가 잘못되고 있다는 느낌을 받았습니다. 질문을 확장하여 수행하려는 작업, 시도 방법 및 전체 오류 출력에 대한 몇 가지 세부 정보를 제공할 수 있습니까? 현재 제공하고 있는 회선이 갑자기 끊어졌습니다...
답변2
매우 간단하고 빠른 방법은 ping
명령을 사용하는 것입니다.
간단히 입력할 수 있습니다.
$ ping yahoo.com
(또는 cnn.com 또는 다른 호스트) 출력을 다시 받는지 확인하세요. 이는 호스트 이름을 확인할 수 있다고 가정합니다(즉, DNS가 작동 중임). 그렇지 않은 경우 원격 시스템의 유효한 IP 주소/번호를 제공하고 연결할 수 있는지 확인할 수 있습니다.
여기에핑 매뉴얼 페이지.
업데이트:
간단한 예로 다음을 확인할 수 있습니다.반환 값(예: "echo $?"
) from 을 사용하여 ping
명령이 성공했는지 확인합니다(항상 명령의 출력을 로 파이프할 수 있음 > /dev/nul
). 참고 저는 여기서 사용 -c 1
하지만 더 많은 것을 사용할 수도 있습니다.
$ ping -c 1 yahoo.com
PING yahoo.com (72.30.38.140) 56(84) bytes of data.
64 bytes from ir1.fp.vip.sp2.yahoo.com (72.30.38.140): icmp_seq=1 ttl=52 time=83.5 ms
--- yahoo.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 83.593/83.593/83.593/0.000 ms
echo $?
0
$ ping -c 1 unicorns.are.here
ping: unknown host unicorns.are.here
$ echo $?
2
답변3
netcat
원하는 서비스를 이용하겠습니다 .
예를 들어 IP 포트 테스트에 성공하면
> nc -zv 192.168.1.1 80
Connection to 172.26.0.1 80 port [tcp/http] succeeded!
...그리고 실패
> nc -zv 192.168.1.1 22
netcat: connect to 172.26.0.1 port 22 (tcp) failed: Connection refused
10초 타임아웃
> nc -zv -w 10 10.0.0.1 80
netcat: connect to 10.0.0.1 port 80 (tcp) timed out: Operation now in progress
답변4
다음 함수를 사용합니다. 기본값은 쿼드9이지만 다른 도메인을 전달할 수 있습니다. 15분 동안 시도하면 시간 초과됩니다.
wait_for_dns() {
local fqhn="quad9.net"
fqhn=${1:-$fqhn}
printf "waiting"
for i in {1..15}; do
local a_record=$(dig +short +time=2 $fqhn)
if [[ $a_record != '' ]]; then
printf "\n"
return 0
fi
printf '.'
sleep 60
done
printf "\n"
return 1
}