特殊なネットワーク環境でないのにnpmでネットワークエラーがでる問題の解決

投稿者: | 10月 19, 2022

導入

AndroidにHomebridgeを導入するという記事を度々あげましたが、問題点がありました。それは、npmがネットワークエラーになって、プラグインやアドオンがインストールできなくなってしまうといことです。エラーの内容は

[unagidojyou@localhost: $ sudo npm update -g npm 
npm ERR! code ECONNRESET
npm ERR! syscall read
npm ERR! errno ECONNRESET
npm ERR! network request to https://registry.npmjs.org/npm failed, reason: read ECONNRESET
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network ‘proxy' config is set properly. See: 'npm help config’

npm ERR! A complete log of this run can be found in: 
npm ERR! /root/.npm/ logs/2022-04-22T02_30_59_375Z-debug-0.log

こんな感じです。apt updateやupgradeは正常にできるのでインターネットには正常につながっているはずです。

原因

結論としては安物のUSB NIC(USB LAN変換アダプタ)が問題でした。自分はこのNIC(RD9700)を4つくらい持っているんですが、なんとMACアドレス(00:E0:4C:53:44:58)が全て同じです。使っていて、これ以外に特に異常がなかったので、同一ネットワーク内になければいいのかなーと思って使用していましたが、もちろんダメでした。初めの方は普通に接続できていて、他サイトでのwgetやcurlは正常にできていたので問題ないと思っていました。

今回の犯人

回避方法

まあ、純粋にMACアドレスをIPコマンドで変更するだけです。詳しくはArchWikiに書かれているのでそちらを読んでください。もともとのMACアドレスが00:E0:4C:53:44:58なので、このMACアドレス生成サイトでOUIを00:E0:4Cを指定して、適当に1つ選びます。

sudo ip link set dev interface down

interfaceは刺したUSB NICのinterface名(eth0やeth1)にしてください。

sudo ip link set dev interface address XX:XX:XX:XX:XX:XX

XX:XX:XX:XX:XX:XXは、先程サイトで生成したMACアドレスです。

sudo ip link set dev interface up

これでMACアドレスが変更されたはずです。

おわりに

自分の環境(Android上のUbuntu)では再起動する度にもとのMAXアドレスに戻ってしまうので、上の内容のスクリプトを作って/etc/rc3.d/下に置きました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)