tcp_ecnのパラメーターを変えたい

Linux Mintのネットワーク環境に関する質問

tcp_ecnのパラメーターを変えたい

投稿記事by 金長狸 » 2016年7月09日(土) 21:33

Windows10をやめてLinux Mint 17.3 で快適に過ごしています。
ただ最近インターネットが切れるようになり、ルーターの電源を切って、入れなおすとつながります。
色々調べるとLinuxでは特定のサイトでECNという仕組みをルーターがサポートしていなことが原因ではないかと思い。
NEC Aterm WH822Nを調べたのですがECNという設定が見当たりません。ECNはサポートされていないよう。
それで、Linuxでtcp_ecnのパラメーターを調べると2になっています。
0か1でdisableかenableのようですが、2はどういう設定なんでしょうか。
コマンドで
# echo 0 > /proc/sys/net/ipv4/tcp_ecn
としても権限がないと変更できません。
このコマンドでは再起動させると設定が戻ってしまうようで、net.ipv4.tcp_ecnを編集しないといけないようで行き詰っています。
コマンドは詳しくないのですが、アドバイスよろしくお願いします。
金長狸
前相撲
 
記事: 6
登録日時: 2016年7月09日(土) 20:50

Re: tcp_ecnのパラメーターを変えたい

投稿記事by 金長狸 » 2016年7月20日(水) 13:44

その後の状況

 まず症状としては、朝の9時前後、夜の7時前後など回線の混雑している時によく切れるようです。

ECNは、経路の混雑具合をルータがクライアントに通知する機能だ。経路が混雑している場合は送出データのサイズを小さくし、空いていれば送出データのサイズを大きくして、効率的にデータを転送する。しかし、ENCをサポートしていないルータに対してLinuxがENCオンのモードで通信を行うと、ルータからのリプライがないため通信できなくなってしまう。

とあるので、このあたりが原因ではないかと思います。ただ回線が切れているわけではなくてシステムモニターなどでは送受信できているしDorpboxなどでファイルを開くこともできます。ただブラウザー(vivaldi)でつながりません。
別のプロバイダーでLinuxを使っていますが、設定を変えなくても問題は出ていません。

suでtcp_ecnのパラメーターをdisableに変更は出来ました。
そして、net.ipv4.tcp_ecn にの最後の行に net.ipv4.tcp_ecn = 0 を追加して# sysctl -p /etc/sysctl.conf</tt>を実行しても、再起動後は変更前の状態に戻ってしまいます。

# sysctl -p /etc/sysctl.conf</tt>の実行で「予期しないトークン」、「周辺に構文エラーがあります」と出るのですがどこが間違っているのでしょうか。

今はdisableに変更して様子を見ています。
金長狸
前相撲
 
記事: 6
登録日時: 2016年7月09日(土) 20:50

Re: tcp_ecnのパラメーターを変えたい

投稿記事by fu-sen » 2016年7月20日(水) 22:51

金長狸 さん、いらっしゃいませ。 :)
ecn のパラメータ変更を行う例は過去に見てなくて、おそらくこれを理解できる人がいなかったと見ます。
自分もその辺は全く経験していないのですが、「sysctl.conf の設定を変える」という前提であれば、コメントを付けられます。


ターミナルより、次を実行してみて下さい。

コード: 全て選択
net.ipv4.tcp_ecn = 0 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p

わざわざ入力する必要はありません。Firefox で参照し、コピーして、ターミナルに貼り付ければ良いです。それを推奨します。

これで

コード: 全て選択
cat /proc/sys/net/ipv4/tcp_ecn

として 0 と返ってこれば変更されています。お試し下さい。


ちなみに頭に # が付いているのは管理者権限で実行する意味を表します。(一般ユーザーは $ )
この場合、Ubuntu 系の Linux では sudo を頭に付けて実行するのが通常の方法です。

コード: 全て選択
# echo 0 > /proc/sys/net/ipv4/tcp_ecn

であれば、実際のコマンドは

コード: 全て選択
sudo echo 0 > /proc/sys/net/ipv4/tcp_ecn

とします。パスワードを聞いてきた場合は、入力して下さい。それで実行されます。
fu-sen
関脇
 
記事: 364
登録日時: 2014年3月06日(木) 17:40

Re: tcp_ecnのパラメーターを変えたい

投稿記事by 金長狸 » 2016年7月21日(木) 21:26

fu-senさん 返信有難うございます。

net.ipv4.tcp_ecn = 0 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p
を一般ユーザーで実行すると
[sudo] password for ******: net.ipv4.tcp_ecn: コマンドが見つかりません
と表示されて変更できません。

sudo echo 0 > /proc/sys/net/ipv4/tcp_ecn
を実行すると
bash: /proc/sys/net/ipv4/tcp_ecn: 許可がありません
と表示されます。

このsudoコマンドは以前に試して許可がありませんと表示されてだめでした。
それでsuコマンドで変更できました。
このtcp_ecnというテキストファイルをrootユーザーでplumaで開いてみると2があるだけでした。
2を0に変更しましたが特殊なファイルのようで保存できませんでした。
suコマンドで変更後は0に変わっていました。

やはり/etc/sysctl.confファイルを編集しないとダメなようです。
このファイルの中身もそれらしき行が見当たらず最後の行に net.ipv4.tcp_ecn = 0
を追加しました。その後 sysctl -p を実行するとありましたが反映されません。

sysctl.confファイルをもう少し調べてみます。
昨日はnet.ipv4.tcp_ecn を0で回線が切れることはありませんでした。
特殊な例なんでしょうかメールサーバーでもECNが原因でつながらないこともあるようですが。
何かヒントがあればよろしくおねがいします。
金長狸
前相撲
 
記事: 6
登録日時: 2016年7月09日(土) 20:50

Re: tcp_ecnのパラメーターを変えたい

投稿記事by 金長狸 » 2016年7月30日(土) 07:43

変更できました。
sysctlコマンドでパラメータの値を変更するのは
$ sudo sysctl -w net.ipv4.tcp_ecn=0
で変更できました。
常にその値に設定するには、rootユーザーでpluma(エディタ)でsysctl.confファイルを編集します。
$ sudo pluma /etc/sysctl.conf
sysctl.confファイルの最後の行に
net.ipv4.tcp_ecn=0
を追加して保存します。この時、行のはじめに#を付けないで=の前後に空白を入れないようにすると反映されました。
他の行を参考に#を入れ=の前後に空白を入れましたがこれがまずかったようです。
すぐに反映させるには
$ sudo sysctl -p
で再起動後もtcp_ecnのパラメータの値は0でした。
金長狸
前相撲
 
記事: 6
登録日時: 2016年7月09日(土) 20:50


Return to ネットワーク環境

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[9人]