
20.04を実行しています。ラップトップのLAN IPを見つけようとしています。実行すると、ifconfig
次のような結果が得られます。
$ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
...
enp0s31f6: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
...
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
...
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
...
virbr1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.39.1 netmask 255.255.255.0 broadcast 192.168.39.255
...
wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.23 netmask 255.255.255.0 broadcast 192.168.0.255
...
上記のうち私のIPは何ですか?たとえば、LAN上の他のPCからこのラップトップにSSHで接続するときにどのIPを使用しますか?
eth0
また、「古い」時代には常に(Ubuntuでも)見ていましたが、もはや使用されていないようです。
答え1
enp0s31f6
ロゴを表示するUP
が表示しないRUNNING
:これは通常、現在有効なリンクがないことを意味します。
一方、存在と記号がwlp0s20f3
同時に存在します。名前プレフィックスは、これがワイヤレスインターフェイスであることを示します。これはラップトップと言うのと同じです。プレフィックスは有線インターフェイスを表します。UP
RUNNING
wl
en
したがって、インターフェイスのIPアドレスwlp0s20f3
(たとえば192.168.0.23
)は、他の物理ホストのインバウンドSSH接続に使用されます。
インターフェイスdocker0
であり、Dockerコンテナおよび/またはそのシステムで実行されている仮想マシン間のネットワーク接続を容易にするために使用されます。他の設定によっては、コンテナ/ VMがホストオペレーティングシステムvirbr0
とのvirbr1
み通信できるようにするか、NATベースのアクセスを許可できます。これは物理ホストの外部にあります。正確な目的を理解するには、iptables NAT および前方フィルタリング規則 (例: sudo iptables -Lvn -t NAT
iptables) を調査する必要があるかもしれませんsudo iptables -Lvn
。
ラップトップのファームウェアに適切なデータロギングが組み込まれている場合は、統合された有線ネットワークインターフェースをとして識別し、ワイヤレスeno1
ネットワークインターフェースをとして識別する必要がありますwlo1
。しかし、ラップトップのファームウェアにはこれらの記録は含まれていないようです。必要に応じて、2つの単純なファイルを作成してインターフェース名を変更できます/etc/systemd/network/*.link
。
sudo udevadm info -q all -p /sys/class/net/enp0s31f6 | grep -e ID_NET_NAME -e ID_PATH
まず、ハードウェアパスを識別し、たとえば、次のように自動的に検出されたネットワークインターフェース候補名を識別する必要があります。出力は次のとおりです。
# udevadm info -q all -p /sys/class/net/enp0s31f6 | grep -e ID_NET_NAME -e ID_PATH
E: ID_NET_NAME_MAC=enx0123456789ab
E: ID_NET_NAME_ONBOARD=eno1
E: ID_NET_NAME_PATH=enp0s31f6
E: ID_PATH=pci-0000:00:1f.6
E: ID_PATH_TAG=pci-0000_00_1f_6
E: ID_NET_NAME=enp0s31f6
この行が表示されない場合は、ID_NET_NAME_ONBOARD
システムファームウェアがネットワークインターフェイスをオンボードインターフェイスとして正しく認識しない可能性があります。理想的には、割り当てられた名前を使用するようにインターフェイス名を変更することでこの問題を解決できます。このインターフェースの名前を変更するには、その行を記録し、それを使用して以下を含むID_PATH=
構成ファイルを作成する必要があります。/etc/systemd/network/70-eno1.link
[Match]
Path=pci-0000:00:1f.6
[Link]
Name=eno1 #or whatever you want
ワイヤレスインターフェースも同様です。
Name=
またNamePolicy=
、設定を使用して事前に生成されたID_NET_NAME_*
候補を選択するか、明示的に設定するのではなく、事前に生成された名前が選択される優先順位を設定することもできます。man 5 systemd.link
詳細は参照してください。
これらのファイルを作成したら、initramfs()を更新して再起動する必要がありますsudo update-inintramfs -u
。再起動したら、必要な名前のインターフェイスを見つける必要があります。
これは、enp0s31f6
PCI デバイスパスに基づく名前です。つまり、PCI デバイスを00:1f.6
31 = 0x1f と表します。今回もwlp0s20f3
PCIデバイス00:14.3
(20 = 0x14)になります。
答え2
まず第一に、このhostname
コマンドを使用してこれを達成できます。以下は、役に立つ2つのオプションです。
hostname -i
またはhostname --ip-address
:これはホスト名を解決できる場合にのみ機能します(ホスト名を使用してSSHに接続することをお勧めします)。以下の次のオプションが優先されます。
hostname -I
またはhostname --all-ip-addresses
: ホストのすべての IP アドレスを印刷します。もちろんいいえホスト名の確認によって異なります。