![Raspberry Piの外部からppp0インターフェイス(4Gモデム)へのSSH接続の問題(タイムアウト)[閉じる]](https://linux33.com/image/141480/Raspberry%20Pi%E3%81%AE%E5%A4%96%E9%83%A8%E3%81%8B%E3%82%89ppp0%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%EF%BC%884G%E3%83%A2%E3%83%87%E3%83%A0%EF%BC%89%E3%81%B8%E3%81%AESSH%E6%8E%A5%E7%B6%9A%E3%81%AE%E5%95%8F%E9%A1%8C%EF%BC%88%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A2%E3%82%A6%E3%83%88%EF%BC%89%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
USB 4Gモデムをインターフェイスとして使用するRaspberry Piへの外部SSH接続の確立に問題があります。 SSHを使用して接続しようとするとタイムアウトが発生します。
ssh -l pi ccc.ccc.ccc.ccc -p 22
ssh_exchange_identification: read: Operation timed out
インターフェイスは明らかにppp0で、外部からpingできる正しいIPアドレスを持っています。以下はifconfigのリストです(IPアドレスが難読化されています)。
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet ccc.ccc.ccc.ccc netmask 255.255.255.255 destination 10.64.64.64
ppp txqueuelen 3 (Point-to-Point Protocol)
RX packets 401 bytes 377702 (368.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 336 bytes 27694 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
他のコンピュータのpingは正常に動作しますが、sshは機能せずタイムアウトします。 tcpdumps を使用してインターフェイスを監視すると、SSH クライアントに接続したときにいくつかの寿命が表示されます。
sudo tcpdump -i ppp0 port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
09:18:26.764806 IP yyy.yyy.yyy.yyy.53681 > ccc.ccc.ccc.ccc.ssh: Flags [S], seq 2675400197, win 65535, options [mss 1386,nop,wscale 5,nop,nop,TS val 672664602 ecr 0,sackOK,eol], length 0
それ以降は命がなく、/var/log/authにログやメッセージもなく、何もありません。 sshd ログ・レベルが DEBUG3 に設定されました。
SSHD設定ファイルは次のとおりです。
Port 22
Port 7654
AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::
# Ciphers and keying
#RekeyLimit default none
# Logging
SyslogFacility AUTH
LogLevel DEBUG3
私のISPなどで22回がブロックされた場合に備えて、あいまいなポート7654を追加してみました。
一般ポリシーが「承認」に設定されていますが、特定のファイアウォールルールを追加してみました。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:7654 ctstate NEW,ESTABLISHED
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:ssh ctstate ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:7654 ctstate ESTABLISHED
ルーティングテーブルは次のとおりです。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.64.64.64 0.0.0.0 UG 0 0 0 ppp0
10.64.64.64 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
bbb.bbb.bbb.0 0.0.0.0 255.255.252.0 U 202 0 0 eth0
対応するbbbはローカルイーサネットです。
運が悪い。接続しようとすると、タイムアウトが発生します。 localhostからこのIPアドレスへのSSHは正常に機能します。
何が間違っていて、どのように解決できるかについてのアイデアはありますか?混乱しても、少なくともインターフェイスに送信されたICMPメッセージを受信し、内部SSHも機能します。外部的にも外部からSSHを使用して接続する場合、インターフェイスはまだ少しの寿命を持っていますが、まだ動作しません。
答え1
問題はルーティングにあります。実験を終了し、ラズベリーのイーサネットケーブルを接続すると、動作が始まりました。幸いなことに、最後のログインを試みました。問題がラズベリー側にあるのか、それともテストに使用しているコンピュータにあるのかわかりません。テストマシンはイーサネットを介して同じラズベリーに接続されており、応答パケットはppp接続ではなくイーサネットを介して送信されると考えられています。これにより、パケットが到着すると、テストマシンで明らかに拒否されます。
答え2
あいまいなポートを指定する必要があります。SSHデーモンの再起動、もう一度やり直してください。
また、ファイアウォールが完全に開いています。これにコメントはありませんが、承認ルールを追加する必要はありません。
個人的に使用をお勧めしますカスタムポート50000以上。読むウィキペディア同じミスを繰り返さないためです。
とにかく一度見てください。Security SEへの私の答えセキュリティを強化します。