マイコンピュータ(Ubuntu 16.04)はイーサネットケーブルを介してホームネットワークに接続されています。別の部屋に移動してWifiを使いたいです。移行ができるだけスムーズに進むことを願っています(例:VPNの切断を防ぐ)。 Wi-Fiとイーサネットに接続できますが、この時点でイーサネットアプリを切断すると接続エラーが発生します。
そのため、ワイヤを切断する前にトラフィックがWi-Fiインターフェイスを使用するように強制する方法が必要になります。両方のインターフェイスがイネーブルの場合は、ip route
次のようになります。
default via 192.168.0.254 dev enp0s31f6 proto static metric 100
default via 192.168.0.254 dev wlp4s0 proto static metric 600
192.168.0.0/24 dev enp0s31f6 proto kernel scope link src 192.168.0.43 metric 100
192.168.0.0/24 dev wlp4s0 proto kernel scope link src 192.168.0.7 metric 600
私が使用している場合:
ip route del default via 192.168.0.254 dev enp0s31f6
トラフィックがクロール速度で遅くなりました。
だから、もう少し微妙に両方のインターフェイスをアクティブに保つが、Wi-Fiインターフェイスを好むインターフェイスにする必要があるようです。私はこれがイーサネットインターフェイスよりもWi-Fiインターフェイスでより小さいメトリックを持つことによって達成されると信じています。しかし、これを行うと:
ip route change default via 192.168.0.254 dev enp0s31f6 proto static metric 600
私は得る:
default via 192.168.0.254 dev enp0s31f6 proto static metric 100
default via 192.168.0.254 dev enp0s31f6 proto static metric 600
したがって、このコマンドはすべてのインターフェースを指定された指標に置き換えることを示しています。 100 または 600 以外の指標値を使用しようとすると、次の結果が表示されます。
RTNETLINK answers: No such file or directory
もちろん、Wi-Fiを使用してイーサネットに再接続すると、トラフィックはシームレスにイーサネットに切り替わります。
それでは、私の仮定のどれが間違っていますか?解決策はありますか?
答え1
Hauckが述べた解決策は1つのアプローチです。このアプローチの欠点は、すべての接続が「ドレイン」されるまで(有線)イーサネットインターフェイスを接続したままにする必要があることです。
よりスムーズだがより複雑な別のアプローチ(たとえば、ルーティングメトリックによると、現在使用しているNetworkManagerを使用してこれを行うことができるかどうかは不明)は、バインディングを使用してインターフェイスを一緒にバインドすることです。これにより、有線イーサネット接続が切断されると、接続は自動的にWiFiを使用するようにフェイルオーバーします。
私の答えは、WiFiと有線接続ボンディングを設定する方法の詳細な説明を示しています。WiFiポートを冗長リンクとして使用する。
答え2
イーサネットインターフェイスを空にする必要があります。iptables
高度なルーティングでは、これを行うことができます。そして
iptables -m conntrack --ctstate NEW
OUTPUTチェーンで新しい接続を見つけてマークすることができます--set-mark
。
これを使用して、ip rule
WiFi経由でこのタグを含むパケットをルーティングできます。
しばらくすると、トラフィックのすべてまたはほとんどが中断することなくWi-Fiを使用します。
ルーターを制御する場合は、SNATを使用して継続的な接続を保存することもできます。