web-dev-qa-db-ja.com

静的IPアドレスの設定が接続されていませんか?

リモートバックアップサーバーの静的IPアドレスを設定するためのチュートリアルに従っています。 ( https://www.techrepublic.com/article/how-to-configure-a-static-ip-address-in-ubuntu-server-18-04/

私はこの一連の指示に従いました:

network:
        renderer: networkd
        ethernets:
            enp0s25:
                dhcp4: no
                addresses: [192.168.111.27/24]
                gateway4: 192.168.1.1
                nameservers:
                         addresses: [192.168.1.1,8.8.8.8]
        version: 2

しかし、今はサーバーに接続できず、変更を加える前に作成した古いコピーからネットプランを復元する必要があります。

カスタムSSH構成:

Host Scilab
  HostName 192.168.43.245
  Port 45834
  IdentityFile ~/.ssh/LesserArkKey

ssh Scilabを使用しようとすると、ssh: connect to Host 192.168.43.245 port 45834: Connection refusedが表示されます。これは以前は機能していたので珍しいです(私はカスタムssh構成を持っています)。現在のssh構成を新しいIPアドレスに変更しました(以前は192.168.1.144でした)

何が悪いのでしょうか。また、IPアドレスをDCHPではなく静的アドレスに設定するにはどうすればよいですか。

EDIT 0:明確にするために、サーバーにデフォルトのネットプランが設定されている場合、サーバーのキーベースのログインは正常に機能します。 ssh Scilabが暗号化キーを要求し、パスワードを入力すると、すべてが接続されます。新しいネットプランを使用しようとしたときにエラーが発生するだけです。その後、何も機能しません。

これらのコマンドもすべて失敗します。

sarah@LesserArk:~$ ssh -p 45834 -i .ssh/LesserArkKey 192.168.111.27
ssh: connect to Host 192.168.111.27 port 45834: Connection refused
sarah@LesserArk:~$ ssh -p 24 -i .ssh/LesserArkKey 192.168.111.27
ssh: connect to Host 192.168.111.27 port 24: Connection refused
sarah@LesserArk:~$ ssh -i .ssh/LesserArkKey 192.168.111.27
ssh: connect to Host 192.168.111.27 port 22: Connection refused

ネットプラン変更後のサーバー: ServerifconfigServer ifconfig

SSHD構成:

#   $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Port 45834
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

HostKey /etc/ssh/ssh_Host_rsa_key
HostKey /etc/ssh/ssh_Host_dsa_key
HostKey /etc/ssh/ssh_Host_ecdsa_key
#HostKey /etc/ssh/ssh_Host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need Host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
MaxStartups 2
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

# override default of no subsystems
Subsystem   sftp    /usr/lib/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#   X11Forwarding no
#   AllowTcpForwarding no
#   PermitTTY no
#   ForceCommand cvs server

Protocol 2

EDIT 1:コマンドの出力は次のとおりです:cat /etc/hosts

127.0.0.1       localhost.localdomain   localhost
::1             localhost6.localdomain6 localhost6

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

cat /etc/nsswitch.conf | grep "hosts:"hosts: files dns

`networkctl status`:

●        State: routable
       Address: 192.168.111.27 on enp0s25
                fe80::225:64ff:feaf:9fc8 on enp0s25
           DNS: 192.168.1.1
                8.8.8.8

ls -l /etc/resolv.conflrwxrwxrwx 1 root root 39 Feb 14 09:49 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

EDIT 2:/ etc/hosts:

127.0.0.1       localhost.localdomain   localhost
::1             localhost6.localdomain6 localhost6
192.168.111.27  scilab_comp_0

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

hostnameの出力:scilab_comp_0

編集3:私は自分のコンピューター(サーバーではない)から短いビデオを作成し、何が起こっているのかについて詳細を示しています: https:/ /www.youtube.com/watch?v=rqQGas4fs_A&feature=youtu.be

ここでIPアドレスの競合の簡単なビデオを作成しました: https://youtu.be/P2rXWvdOM7kexit

EDIT 4:telnet 192.168.111.27 45834の出力

sarah@scilab_comp_0:~$ telnet 192.168.111.27 45834
Trying 192.168.111.27...
Connected to 192.168.111.27.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
Connection closed by foreign Host.

さらに掘り下げたところ、サーバーに2つのIPアドレスがあることに気付きました。こちらがip aです:

2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:25:64:af:9f:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.111.27/24 brd 192.168.111.255 scope global enp0s25
       valid_lft forever preferred_lft forever
    inet 192.168.1.142/24 brd 192.168.1.255 scope global dynamic enp0s25
       valid_lft 78971sec preferred_lft 78971sec
    inet6 fe80::225:64ff:feaf:9fc8/64 scope link 
       valid_lft forever preferred_lft forever

ご覧のとおり、1つは動的で、もう1つは静的です。静的なものが機能するかどうか、または動的なものを取り除く方法はわかりません(yamlを元の設定に戻したので、しばらくの間、コンピューターからリモートでアクセスできるため)。設定ファイルにDCHPのみが必要であると記載されている場合、静的IPアドレスはどこから取得されますか?

また、50-cloud-init.yamlのみが構成に影響することを確認しました。 .DISABLED接頭辞は、効果がないように見えるので、作成した他のyamlファイルに追加しました。

EDIT 4:より良いテスト

サーバーが接続できるかどうかをテストするより良い方法を作りました。サーバーにログインしている2つのターミナルウィンドウがあり、1つはwhile true; do ip a; ping -c3 google.com; date; sleep 10; doneでループを実行するだけです。もう1つは、ネットプランをSudo netplan tryして、IPアドレスを静的に設定します。

結果は次のとおりです。-IPアドレスが静的になるたびに(「Sudo netplan try」で他の端末でEnterキーを押した後、pingが失敗します。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:25:64:af:9f:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.111.27/24 brd 192.168.111.255 scope global enp0s25
       valid_lft forever preferred_lft forever
    inet6 fe80::225:64ff:feaf:9fc8/64 scope link 
       valid_lft forever preferred_lft forever
ping: google.com: Temporary failure in name resolution

そして、それがDCHP IPアドレス(2つのIPアドレスを持っているときに以前に配置された)の使用に戻るたびに、それは戻って私のPCのSSHシェルに情報を報告します。

1
Sarah Szabo

静的IPに対するサーバーのネットプラン構成では、ゲートウェイのサブネットとは異なるサブネットのIPアドレスを要求しています。 netplanはそのIPをデバイスに割り当てることができますが、ゲートウェイはそれと通信できません。

修正するには、DHCP経由で割り当てられた同じサブネット内のIPアドレスを要求します。したがって、DHCPで割り当てられたアドレスが192.168.1.15の場合は、netplan yamlファイルを次のように設定します。

network:
    renderer: networkd
    ethernets:
        enp0s25:
            dhcp4: no
            addresses: [192.168.1.111/24]
            gateway4: 192.168.1.1
            nameservers:
                     addresses: [192.168.1.1,8.8.8.8]

ゲートウェイIPがわからない場合は、DHCP経由の接続が良好な状態で次のコマンドを発行します。

ip route 

システムは次のように応答します

 default via 192.168.1.1 dev netdev01 ....

この出力では、ゲートウェイはdefault viaフィールドで識別されます。

簡単にするため、およびDNSとローカルSSH構成によって発生する問題を回避するために、サーバーのリテラルIPアドレスを使用してクライアントSSHリクエストを発行できます。

ssh [email protected]

これはバックアップサーバーであるため、サーバーとのほとんどの通信がスクリプト化される可能性が高いため、ホスト名を使用する機能の唯一の理由は、サーバーのIPは非常に変更される可能性があります。

また、簡単にするために、特に理由がない限り、デフォルトの~/.ssh/id_rsa.pubにsshキーを生成します。これにより、リクエストのコーディングがよりクリーンでシンプルになります。ローカルの家の外にキーを保存したい場合、または何らかの理由で、ホストごとに異なるキーを保持することを想像できない場合にのみ、公開キーを名前付きファイルに配置しました。

3
Stephen Boston