LinuxシステムでIPv6のIPルールを追加しようとすると、次のエラーが発生します。
$ ip -6 rule add fwmark 0xfab lookup 0xf
RTNETLINK answers: Address family not supported by protocol
IPルールコードを見ましたが、これはカーネルにnetlinkメッセージを送信します。いくつかのモジュールをロードする必要があるかもしれませんが、どのモジュールなのかわかりません。この問題を解決するにはどうすればよいですか?
私はカーネルソースから構築されたLinux 2.6.37.3を使用しています。
回避策:デフォルトでは、LinuxバージョンはIPv6のマルチルーティングテーブルをサポートしません。複数のIPv6ルーティングテーブルをサポートするには、CONFIG_IPV6_MULTIPLE_TABLESを有効にする必要があります。
答え1
IPv6機能は、ipv6カーネルモジュールを介してシステムに提供されます。モジュールが現在システムにロードされていることを確認するには、rootとして次のコマンドを実行します。
lsmod | grep ipv6
出力にipv6が表示された場合は、モジュールがロードされたことを意味します。
/etc/modprobe.conf を確認し、ipv6 が無効になっていることを確認してください。
alias ipv6 off
options ipv6 disable=1
しなければならない
alias net-pf-10 ipv6
インターフェース固有の構成ファイルをさらに確認してください。 (Fedora、CentOSなどのRedHatスタイルのディストリビューションを使用している場合)
存在する/etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=yes
IPV6_AUTOCONF=yes
/etc/sysconfig/network
ファイルにある場合:
NETWORKING_IPV6=yes
その後、network
サービスを再起動し、システムを再起動してipv6カーネルモジュールを完全にロードします。
答え2
lookup
私はこれがどのオブジェクトにも有効なオプションだとは思いませんip
。ルール操作にはtable
、nat
またはprohibit
recject
が含まれますunreachable
。realms
あなたの命令形式で判断すると、それはあなたが望むものであると予想されますtable
。努力する
ip -6 rule add fwmark 0xfab table 0xf