web-dev-qa-db-ja.com

OpenWRTでIPv6を無効にする

ルーターで標準のLinksysファームウェアを使用すると、ネットワークデバイスはインターネットへのアクセスにのみIPv4を適切に使用します。

OpenWRT 15.05.1を使用すると、デバイスはIPv6アドレスを使用してさまざまなサイトに接続しようとします。これは、ISPが提供していないIPv6サービスを提供している場合に最適です。

DHCPv6をオフにし、dnsmasqのDNSキャッシングを無効にし、dnsmasqのDHCPサーバーを設定して静的DNSサーバーアドレスを提供する(8.8.8.8)、およびOpenWRTの内部DNSサーバー設定をそのDNSサーバーを使用するように設定します。

OpenWRTにIPv6を使用してもよいことをデバイスに通知しないようにするにはどうすればよいですか?

ネットワークデバイスの1つでのコマンドの結果

の結果 ip addrは:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope Host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope Host 
       valid_lft forever preferred_lft forever
2: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1a:80:7a:4e:47 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.107/24 brd 192.168.1.255 scope global dynamic enp6s0
       valid_lft 42521sec preferred_lft 42521sec
    inet6 fd7f:77c6:629f::9e8/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fd7f:77c6:629f::4e3/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fd7f:77c6:629f:0:21a:80ff:fe7a:4e47/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::21a:80ff:fe7a:4e47/64 scope link 
       valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1d:e0:44:04:57 brd ff:ff:ff:ff:ff:ff

の結果 route -6は:

Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
fd7f:77c6:629f::4e3/128        ::                         U    256 0     0 enp6s0
fd7f:77c6:629f::9e8/128        ::                         U    256 0     0 enp6s0
fd7f:77c6:629f::/64            ::                         U    100 1     3 enp6s0
fd7f:77c6:629f::/48            fe80::c256:27ff:fe77:37a7  UG   100 0     0 enp6s0
fe80::/64                      ::                         U    256 2    10 enp6s0
::/0                           ::                         !n   -1  1   729 lo
::1/128                        ::                         Un   0   3     6 lo
fd7f:77c6:629f::4e3/128        ::                         Un   0   1     0 lo
fd7f:77c6:629f::9e8/128        ::                         Un   0   1     0 lo
fd7f:77c6:629f:0:21a:80ff:fe7a:4e47/128 ::                         Un   0   2     3 lo
fe80::21a:80ff:fe7a:4e47/128   ::                         Un   0   2    30 lo
ff00::/8                       ::                         U    256 2    67 enp6s0
::/0                           ::                         !n   -1  1   729 lo

両方の結果ping6 google.comおよびping6 2607:f8b0:4008:808::200eは:

connect: Network is unreachable
7
Olathe

初期インストール(または設定のリセット)時に、OpenWrtは一意のローカルアドレスプレフィックスを生成し、ULAをネットワーク内のすべてのデバイスに割り当てます。これにより、グローバルIPv6接続がなくても、IPv6を介して内部的に通信できます。

これは、2つのシナリオを除いて、通常は正常に機能します。

  1. エンドデバイスは、このアドレス範囲がその目的に使用できないにもかかわらず、とにかくグローバルIPv6トラフィックをルーティングしようとします。ルーティングテーブルは、これが起こっていることを示しておらず、過去10年間に一般的に使用されていたオペレーティングシステムがこれを行っていません。
  2. アプリケーションが誤動作し、コンピューターがグローバルIPv6接続(より具体的には、デフォルトルート)を持っていない場合にグローバルIPv6接続を試みます。あなたの説明から、これは起こっているようです。

明確にするために:ULAプレフィックスをアドバタイズすることにより、OpenWrtはnotであり、IPv6を介してインターネットにアクセスしてもよいことをデバイスに伝えます。 IPv6を介してホームネットワークにアクセスすることは問題ないということを伝えているだけです。

長期的な解決策は、問題のあるアプリケーションを修正することです。特定のアプリケーションでこの動作が発生した場合は、バグとしてその開発者に報告する必要があります。

短期的な回避策は、OpenWrtではなくULAプレフィックスを通知することです。 Network> Interfacesに移動し、IPv6 ULA-Prefixボックスを空白にして、Save&Applyをクリックします。 。これにより、OpenWrtがULAプレフィックスをアドバタイズできなくなります。ルーターの設定をデフォルトにリセットした場合は、再度これを行う必要がある場合があります。

11
Michael Hampton

より簡単な方法は、OpenWrtルーターにSSHで接続し、次のコマンドを実行することです。

uci set 'network.lan.ipv6=off'
uci set 'network.wan.ipv6=off'
uci set 'dhcp.lan.dhcpv6=disabled'
/etc/init.d/odhcpd disable
uci commit

最初のコマンドはIPv6 LANインターフェースを無効にし、2番目はIPv6 WANインターフェース、3番目と4番目はDHCPv6サーバーを無効にし、uci commitは変更をコミットします。

2
Sir Muffington