ユーザーが接続(POP3)を試みると、Dovecot / Postfixメールサーバーは[RST、ACK]で[SYN]に応答します。たぶんiptablesでしょうか?

ユーザーが接続(POP3)を試みると、Dovecot / Postfixメールサーバーは[RST、ACK]で[SYN]に応答します。たぶんiptablesでしょうか?

現在、ユーザーは電子メールを送信できますが、サーバー(POP3)にログインしたり、Outlookクライアントを使用して電子メールを受信できない電子メールサーバーの問題を解決したいと思います。以前は動作していましたが、サーバーを現在の場所に移動すると問題が発生しました。私はファイアウォールが問題の原因であると疑った。

まず、ファイアウォールを変更する前(または変更しようとする前)のハンドシェイクは次のとおりです。

  • メールサーバー:192.168.25.26
  • 顧客:192.168.25.50

         Source     |     Destination     |   PROTO  |     INFO
    192.168.25.50        192.168.25.26         TCP        50861 > pop3 [SYN] seq=0 win=65535 len=0
    192.168.25.26        192.168.25.50         TCP        pop3 > 58601 [RST, ACK] seq=1 win=1 len=0
    192.168.25.50        192.168.25.26         TCP        [TCP Retransmission] 58061 > pop3 [Syn] etc....
    

そして[rst、ack]、[tcp retransmit]ダンスが失敗する前に再び発生します。

192.168.25.26およびPOP3のファイアウォール(Cisco)規則は次のとおりです。

中:
   source     |     destination     |        service     
     any           192.168.25.0/24          tcp/pop3
192.168.25.0/24          any                tcp/smtp
                  208.105.121.196
外部:
   source     |     destination     |        service     
     any           192.168.25.26            tcp/pop3
                        any                 tcp/smtp

私にとってはこれがよさそうだ。確かにメールサーバー(Zentyal)で次のコマンドを実行しました。

(IPテーブルがひどく設定されています。ここに問題があるようです。許可する方法はありますか?みんなトラフィック、単にテスト用ですか? )

sudo iptables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

ただし、まだOutlook接続機能はありません。この時点で、電子メールサーバーで次のコマンドを実行しました。

telnet 127.0.0.1 110

メールサーバーにログインできます。ネットワーク内のクライアントで同じコマンドを実行しましたが、「接続に失敗しました」というメッセージが表示されました。

これらの変更を行った後、Outlookで「設定テスト」を試みると、ハンドシェイクプロセスは次のようになります。何か変なことを見つけました。

     Source     |     Destination     |   PROTO  |     INFO
192.168.25.50        192.168.25.26         TCP        apollo-status > pop3 [SYN] seq=0 win=65535 len=0
192.168.25.26        192.168.25.50         TCP        pop3 > apollo-status [RST, ACK] seq=1 win=1 len=0
192.168.25.50        192.168.25.26         TCP        [TCP Retransmission] apollo-status > pop3 [Syn] etc....

前回と同様にさらに2回行われました。これで、情報ウィンドウにポート番号の代わりにapollo-statusが表示されます。次の 2 回実行すると、それぞれ npep_messaging と synapse が表示されました。 dovecot.configでデフォルトのリスナーを以前に指定されたポートからアスタリスク "*"に変更したため、これはdovecotで選択された任意のポートであると思われます。これは4,000年代のランダムポートであるように見え、ファイアウォールの背後にあります。

確認すると、(推奨)設定によって使用するポートが毎回変更されるようです。明らかに、ループバックインターフェイスポート110にリスナーが接続されていますが、他のコンピュータでは動作が停止しているようです。

どんな助けでも別の言葉ありがとうございます。私はこのために多くの努力を払っており、コミュニティから新しいアイデアを思い出すことができることを願っています。

ベストアンサー1

したがって、RSTニュースはあなたを驚かせてはいけません。これは、ファイアウォールを持つサービスにアクセスしようとするたびに、またはオペレーティングシステムがそのサービスがこのポートでリッスンしていないことを通知するたびに発生します(BTW、Tracerouteは、このトリックを使用してTracerouteが検出を停止する必要がある場合)を把握します。)。

私のボックスのListen状態にあるTCPソケットを見てみましょう。

❯ netstat -an | grep LISTEN                                      [11:49:58 PM]
tcp4       0      0  *.9100                 *.*                    LISTEN
tcp4       0      0  *.17500                *.*                    LISTEN
tcp4       0      0  127.0.0.1.8021         *.*                    LISTEN
tcp6       0      0  ::1.8021               *.*                    LISTEN
tcp4       0      0  127.0.0.1.3306         *.*                    LISTEN
tcp4       0      0  *.22                   *.*                    LISTEN
tcp6       0      0  *.22                   *.*                    LISTEN
tcp4       0      0  127.0.0.1.631          *.*                    LISTEN
tcp6       0      0  ::1.631                *.*                    LISTEN

それでは、私のローカルトラフィックをスヌーピングしながら、存在しないサービスに接続してみましょう。

 ❯ nc -v -z 127.0.0.1 12002                                       [11:50:12 PM]
nc: connectx to 127.0.0.1 port 12002 (tcp) failed: Connection refused

これはそのようなサービスがないことを知らせるオペレーティングシステムです。ファイアウォールはまったく同じように偽造します(REJECTターゲットを使用するとうまく機能します。ターゲットはトラフィックに対して/ dev / nullを破棄します)。

❯ sudo tshark -i lo -s0                                                                                                                                [11:50:04 PM]
Capturing on 'Loopback'
  1   0.000000    127.0.0.1 -> 127.0.0.1    TCP 68 54188→12002 [SYN] Seq=0 Win=65535 Len=0 MSS=16344 WS=32 TSval=688032360 TSecr=0 SACK_PERM=1
  2   0.000063    127.0.0.1 -> 127.0.0.1    TCP 44 12002→54188 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0

アクティブポートに接続すると、TCPハンドシェイクと解体ダンスが発生します。

 ❯ nc -v -z 127.0.0.1 8021                                        [11:50:23 PM]
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 54190
    dst 127.0.0.1 port 8021
    rank info not available
    TCP aux info available

関連するネットワークトラフィックは次のとおりです。

  3  11.123990    127.0.0.1 -> 127.0.0.1    TCP 68 54190→8021 [SYN] Seq=0 Win=65535 Len=0 MSS=16344 WS=32 TSval=688043453 TSecr=0 SACK_PERM=1
  4  11.124082    127.0.0.1 -> 127.0.0.1    TCP 68 8021→54190 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=16344 WS=32 TSval=688043453 TSecr=688043453 SACK_PERM=1
  5  11.124091    127.0.0.1 -> 127.0.0.1    TCP 56 54190→8021 [ACK] Seq=1 Ack=1 Win=408288 Len=0 TSval=688043453 TSecr=688043453
  6  11.124099    127.0.0.1 -> 127.0.0.1    TCP 56 [TCP Window Update] 8021→54190 [ACK] Seq=1 Ack=1 Win=408288 Len=0 TSval=688043453 TSecr=688043453
  7  11.136377    127.0.0.1 -> 127.0.0.1    TCP 56 54190→8021 [FIN, ACK] Seq=1 Ack=1 Win=408288 Len=0 TSval=688043464 TSecr=688043453
  8  11.136406    127.0.0.1 -> 127.0.0.1    TCP 56 8021→54190 [ACK] Seq=1 Ack=2 Win=408288 Len=0 TSval=688043464 TSecr=688043464
  9  11.136415    127.0.0.1 -> 127.0.0.1    TCP 56 [TCP Dup ACK 7#1] 54190→8021 [ACK] Seq=2 Ack=1 Win=408288 Len=0 TSval=688043464 TSecr=688043464
 10  11.263097    127.0.0.1 -> 127.0.0.1    TCP 56 8021→54190 [FIN, ACK] Seq=1 Ack=2 Win=408288 Len=0 TSval=688043587 TSecr=688043464
 11  11.263126    127.0.0.1 -> 127.0.0.1    TCP 56 54190→8021 [ACK] Seq=2 Ack=2 Win=408288 Len=0 TSval=688043587 TSecr=688043587

では、問題をどのように解決しますか?

ソケットが外部から見えるポート(*:port_number)でリッスンしていることを確認してください。

❯ netstat -an | grep LISTEN                                      [11:49:58 PM]
tcp4       0      0  *.9100                 *.*                    LISTEN <<< COOL
tcp4       0      0  *.17500                *.*                    LISTEN
tcp4       0      0  127.0.0.1.8021         *.*                    LISTEN <<< NOT COOL

最も簡単なファイアウォールで起動するか、ファイアウォールなしで起動して、同じLAN上のリモートデバイスからサービスポートに接続します。カーネルフラグを渡すには、サーバー側でsysctlを介してiptablesを開く必要があります。

sudo iptables  -n -L -X -v
sudo tshark -i eth0 -s0 port 110

クライアントから

sudo tshark -i eth0 -s0 port 110
nc  -v -z mailserver.example.org 110

送信内容が正確にリモートボックスに到達する内容であることを確認するには、両端のtshark出力を比較することが重要です。

おすすめ記事