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アドレス/番号を提供してアクセスできることを確認できます。
これはping マニュアルページ。
修正する:
簡単な例で確認できます。戻り値(たとえば、"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
}