2017-05-16 11 views
10

これは私を苦労させていますが、何らかの理由で外部から特定のポートにアクセスできません。私はほぼすべての可能な設定を確認しましたが、なぜこれが機能していないのかわかりません。私はこの問題(Ubuntuのファイアウォール対Dockcot対Postfix)をどこで修正すればい​​いのか分からず、皆さんが私を助けてくれることを本当に望んでいます。一部の露出されたDockerポートは外部からアクセスできない(dovecot、postfix)

FYI:mycooldomain.comは、現時点では共有したくないドメインのプレースホルダです。

私はこれを修正するのに役立つ人のためにビールを購入します! :)私のルートサーバーで

ショートイントロ

は、私はいくつかのポート(143、25、587、993)を公開し、次のドッキングウィンドウのメールサーバーコンテナ(https://github.com/tomav/docker-mailserver/)を実行していますよ。コンテナはdovecot(IMAP)とpostfix(SMTP)を実行します。

TL; DR

は私がドッキングウィンドウコンテナ内で実行されている上記のメールサーバ(dovecotの、接尾辞)を持っており、唯一のポート(143 - IMAP)に接続することができます。その他のポート25,587,993には外部からはアクセスできません。ホストからのみ直接アクセスできます。 Dockerはそれらを正しく公開し、iptablesに正しくリストされます。コンテナ(dovecot、postfix)のログは、リクエストが入ったとき(拒否されたリクエストやそのようなものは何もない)何も反応しないので、コンテナ内のサービスに到達しないと思います。他のドッカーコンテナポート(たとえば、私のWebサーバー:80,443)。

ここでは詳細な情報があります:

私は(のは、IMAPセキュアポートをテストしてみましょう)を直接ホストからのすべてのポートに接続することができます。

[email protected]:~$ telnet mail.mycooldomain.com 993 
Trying xxx.xxx.xxx.xxx… 
Connected to mail.mycooldomain.com. 
Escape character is '^]'. 
220 mail.mycooldomain.com ESMTP Postfix (Ubuntu) 

でもない、私のローカルマシンから:

mastixmc$ telnet mail.mycooldomain.com 993 
Trying xxx.xxx.xxx.xxx… 
telnet:connect to address xxx.xxx.xxx.xxx: Operation timed out 
telnet: Unable to connect to remote host 

​​私には、が公開されています。 a ND が正しくをバインド:

110/tcp, 
0.0.0.0:143-143/tcp, 
0.0.0.0:25->25/tcp, 4190/tcp,  
0.0.0.0:587->587/tcp,    
0.0.0.0:993->993/tcp, 995/tcp 

netstat -ntlpは同じ私に語った:

Proto Recv-Q Send-Q Local Address   Foreign Address   State  PID/Program name 
tcp6  0  0 :::587     :::*     LISTEN  - 
tcp6  0  0 :::143     :::*     LISTEN  - 
tcp6  0  0 :::80     :::*     LISTEN  - 
tcp6  0  0 :::25     :::*     LISTEN  - 
tcp6  0  0 :::443     :::*     LISTEN  - 
tcp6  0  0 :::2332     :::*     LISTEN  - 
tcp6  0  0 :::993     :::*     LISTEN  - 

私は私のウェブサーバ(80/443)と非セキュアなIMAP(143)にアクセスすることができます - 私は許しません未来。しかし、他のすべてのポートにはアクセスできません。

(それが必要ではないですが)私もUbuntuは何かをブロックしていないことを確認するUFWを設定します。

Added user rules (see 'ufw status' for running firewall): 
ufw allow 80/tcp 
ufw allow 443/tcp 
ufw allow 25/tcp 
ufw allow 587/tcp 
ufw allow 143/tcp 
ufw allow 993/tcp 

ログ(Dovecotは、Postfixの)を見たとき、私はすべての情報が表示されませんリクエストがサービスに到達しないように見えます。

DEFAULT_FORWARD_POLICY="DROP" 

そしてUFW

は、/ etc/default/DID NOTドッカエンジンで変更iptables = false:I

タッチ次ドッカー/ UFW設定しませんでした。

Chain INPUT (policy ACCEPT) 
target  prot opt source    destination 
ufw-before-logging-input all -- anywhere    anywhere 
ufw-before-input all -- anywhere    anywhere 
ufw-after-input all -- anywhere    anywhere 
ufw-after-logging-input all -- anywhere    anywhere 
ufw-reject-input all -- anywhere    anywhere 
ufw-track-input all -- anywhere    anywhere 

Chain FORWARD (policy DROP) 
target  prot opt source    destination 
DOCKER-ISOLATION all -- anywhere    anywhere 
DOCKER  all -- anywhere    anywhere 
ACCEPT  all -- anywhere    anywhere    ctstate RELATED,ESTABLISHED 
ACCEPT  all -- anywhere    anywhere 
ACCEPT  all -- anywhere    anywhere 
DOCKER  all -- anywhere    anywhere 
ACCEPT  all -- anywhere    anywhere    ctstate RELATED,ESTABLISHED 
ACCEPT  all -- anywhere    anywhere 
ACCEPT  all -- anywhere    anywhere 
DOCKER  all -- anywhere    anywhere 
ACCEPT  all -- anywhere    anywhere    ctstate RELATED,ESTABLISHED 
ACCEPT  all -- anywhere    anywhere 
ACCEPT  all -- anywhere    anywhere 
ufw-before-logging-forward all -- anywhere    anywhere 
ufw-before-forward all -- anywhere    anywhere 
ufw-after-forward all -- anywhere    anywhere 
ufw-after-logging-forward all -- anywhere    anywhere 
ufw-reject-forward all -- anywhere    anywhere 
ufw-track-forward all -- anywhere    anywhere 

Chain OUTPUT (policy ACCEPT) 
target  prot opt source    destination 
ufw-before-logging-output all -- anywhere    anywhere 
ufw-before-output all -- anywhere    anywhere 
ufw-after-output all -- anywhere    anywhere 
ufw-after-logging-output all -- anywhere    anywhere 
ufw-reject-output all -- anywhere    anywhere 
ufw-track-output all -- anywhere    anywhere 

Chain DOCKER (3 references) 
target  prot opt source    destination 
ACCEPT  tcp -- anywhere    172.19.0.3   tcp dpt:https 
ACCEPT  tcp -- anywhere    172.19.0.3   tcp dpt:http 
ACCEPT  tcp -- anywhere    172.19.0.7   tcp dpt:imaps 
ACCEPT  tcp -- anywhere    172.19.0.7   tcp dpt:submission 
ACCEPT  tcp -- anywhere    172.19.0.7   tcp dpt:imap2 
ACCEPT  tcp -- anywhere    172.19.0.7   tcp dpt:smtp 

Chain DOCKER-ISOLATION (1 references) 
target  prot opt source    destination 
DROP  all -- anywhere    anywhere 
DROP  all -- anywhere    anywhere 
DROP  all -- anywhere    anywhere 
DROP  all -- anywhere    anywhere 
DROP  all -- anywhere    anywhere 
DROP  all -- anywhere    anywhere 
RETURN  all -- anywhere    anywhere 
[...] 
Chain ufw-user-input (1 references) 
target  prot opt source    destination 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:imaps 
ACCEPT  udp -- anywhere    anywhere    udp dpt:imaps 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:2332 
ACCEPT  udp -- anywhere    anywhere    udp dpt:2332 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:http 
ACCEPT  udp -- anywhere    anywhere    udp dpt:http 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:https 
ACCEPT  udp -- anywhere    anywhere    udp dpt:https 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:submission 
ACCEPT  udp -- anywhere    anywhere    udp dpt:submission 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:http 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:imap2 
ACCEPT  udp -- anywhere    anywhere    udp dpt:imap2 

だから、すべては私には正しいよう:

ここでは、ドッキングウィンドウのチェーンは、(また、私のUFWルールがある)が正しくルールを追加することをはっきりと見ることができるのiptables -Lコールは、です。

更新#1:(mycooldomain.comに対する)ドッキングウィンドウのホストから

nmapの:(mycooldomain.comに対して)私のローカルマシンから

PORT STATE SERVICE 
25/tcp filtered smtp 
80/tcp filtered http 
143/tcp filtered imap 
443/tcp filtered https 
587/tcp filtered submission 
993/tcp filtered imaps 

nmapの:

PORT STATE SERVICE 
80/tcp open http 
143/tcp open imap 
443/tcp open https 

ご覧のとおり、ポートが開いていないので、ポート25,587、および993にリモートから接続できません。

UPDATE#2:

だから私はすべてのコンテナを停止し、簡単なPythonのHTTPサーバをopenendました:

sudo python -m SimpleHTTPServer 993 

はまた、このポートにアクセスすることはできません。だから私はポート8080 =>成功と同じサーバーを開いた。

Ubuntuのように見えるか、私のホストがポート993をブロックしています。私は現在、ルートサーバーを提供している人と接触しています。

私は既にプロジェクト自体に問題を提出しましたが(https://github.com/tomav/docker-mailserver/issues/602)、私にも助けにはなりませんでした。

はサシャ

+1

ドッキングウィンドウなしのリモートアクセス動作しますか?あなたは、機能していないポートでドッカーを使って何かを実行して接続することができますか?おそらくあなたのホスティング業者が一部のポートをブロックしている可能性があります。 'nmap'スキャンの出力も興味深いでしょう。 – fzgregor

+0

- SSHデーモンはアクセス可能な状態で実行されています。また、リモートからアクセスできる他のドッカーコンテナもあります(たとえば、ポート80と443でリバースプロキシをリッスンしている)。この応答の直後にnmapポートスキャン結果を追加します。 – Sascha

+0

私は現在ホスティング業者と連絡を取り、メールサーバーポートをブロックしているかどうかを確認しています。 – Sascha

答えて

2

Greetz、

、事前にありがとうございました、私はそれを修正...または少なくとも私のホスティング事業者はなかったです。特定のポートをブロックする別のハードウェアファイアウォールがありました。彼らは特定の "メールサーバー"ファイアウォールルールセットを有効にしなければならず、メールサーバーを実行できます。

ご協力いただきありがとうございます。

Greetz、

サシャ

関連する問題