web-dev-qa-db-ja.com

LinuxでIPv6 IPアドレスを取得する方法

Linuxサーバーがあり、1つのコマンドラインでメインのIPv6アドレスを検索したいと考えています。

これまでの私のコマンド:

$ ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

それは示しています:

2001:410:0:39:221:28ff:fe46:eef4
fe80::221:28ff:fe46:eef4

しかし、出力が次のようになるように1回のみが必要です。

2001:410:0:39:221:28ff:fe46:eef4
36
Ankit Goyal
ip -6 addr

iPv6アドレスが表示されます。

32
Jim G.

/sbin/ip -6 addr | grep inet6 | awk -F '[ \t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80

/sbin/ip -6 addr | grep inet6の出力は次のようになります。

inet6 ::1/128 scope Host 
inet6 2001:123:456:55f::1/64 scope global 
inet6 fe80::62eb:69ff:fed2:d2a6/64 scope link 

awk -F '[ \t]+|/' '{print $3}'は、各行設定区切り文字を1つ以上の空白またはフォワードスラッシュに分割します。必要なのは3ドルです。

grep -v ^::1 | grep -v ^fe80::1またはfe80で始まる行を除外します。

6
Qian Chen
$ /sbin/ifconfig | grep inet6
      inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link
      inet6 addr: fe80::211:22ff:fe33:4455/64 Scope:Link
      inet6 addr: ::1/128 Scope:Host

1つのIPv6アドレスをランダムに選択したい場合

$ /sbin/ifconfig | grep inet6 | head -n 1
      inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link

最初のイーサネットアダプターの最も一般的な名前のIPv6アドレスが必要な場合

$ /sbin/ifconfig eth0 | grep inet6
      inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link

あなただけのアドレスが必要な場合

$ /sbin/ifconfig eth0 |  awk '/inet6/{print $3}'
fe80::2ff:19ff:fe60:1a00/64
3
RedGrittyBrick

LinuxでIPアドレスを表示するには、次のコマンドを使用します。

ifconfig

通常、IPv6アドレスは2001:5c0:9168::/48のようになります。 IPの競合が発生している場合は、次の手順に従ってIPアドレスを再度設定してください。

  1. IPv6 IPを割り当てるには、iproute2ツールがインストールされていることを確認してください。
  2. それらを使用して、IPの割り当てを始めましょう。
  3. Ipv6モジュールがインストールされているかどうかを確認してください。

次に、次のコマンドを使用して新しいIPを追加します。

ip -f inet6 addr add 2001:5c0:9168::2/64 dev eth0

その後、デフォルトのIPを追加します

ip -f inet6 ro add default via 2001:5c0:9168::1 dev eth0

インストールが完了したら、Apache、SSHなどのIPv6対応サービスを再構成/再起動するだけです。

2
user1908924

いくつかの小さな調整で、あなたの最初の試みはうまくいったでしょう:

ip -o -6 addr show eth0 | sed -e 's/^.*inet6 \([^ ]\+\).*/\1/'

大きな変更点は、-oフラグが追加され、エントリが1行に1つずつ出力されるようになりました。これにより、sedを簡単に実行できます。

1
Keith Gaughan

まず、IPv6では、どのマシンにも複数のIPv6アドレスがあり、それらが別々のネットワーク上にあり、到達したい場所に応じてそれらのいずれかが使用される可能性があることを覚えておく必要があります。

したがって、送信元IPアドレスが何かという質問に答える前に、トラフィックの送信先を決定する必要があります。次に、その宛先にトラフィックを送信するときに、どのIPv6アドレスがソースになるかをLinuxに要求するだけです。

「インターネット」に送信する場合は、ランダムなグローバルIPv6アドレスをランダムに選択します。 GoogleのパブリックDNSアドレス。

ip r get to 2001:4860:4860::8888 | Perl -ne '/src ([\w:]+)/ && print "$1\n"'
2001:db8:f387:c818:5:2:0:1000

これは、その宛先へのルートをLinuxに要求します。 Perlはsrcを探して結果を解析し、次のフィールドを出力します。

別の宛先を指定すると、別の送信元アドレスを受け取る可能性があります。

ip r get to ::1 | Perl -ne '/src ([\w:]+)/ && print "$1\n"'
::1
0
Michael Hampton
ip addr show dev eth0 | sed -e's/^.*inet6 \(2001[^ ]*\)\/64 scope global dynamic.*$/\1/;t;d'
0
Werner Neumann