Ubuntu 18.04でlocalhostのポート25に通信ができないので、解消方法またはそれに向けた調査のアドバイスをいただけないでしょうか?
実現したいこと
localhostから他のホストに向けてメールを送信するため、Postfixサーバを建てたい。
他のホストで動作確認したPostfixのコンテナを、問題のサーバで実行したところ、localhost-Postfix間の通信が通りませんでした。
Postfixのコンテナを停止し、ポート25が使えるかのみを単体で確認したところ、これがそもそも使えていないことが判明しました。
環境
- OS: Ubuntu 18.04
- コンテナエンジン: Podman 0.4.0
試したこと
Postfixコンテナを停止した状態で、以下の確認を実施しました。
ファイアウォールがポート25に対するlocalhostからのパケットをDROPしていないことを確認
INPUTのnum1でループバックは全許可しているので、DROPされることはないはず。
sh
1$ sudo iptables -L -v --line-number 2Chain INPUT (policy DROP 0 packets, 0 bytes) 3num pkts bytes target prot opt in out source destination 41 0 0 ACCEPT all -- lo any anywhere anywhere 52 0 0 ACCEPT all -- any any (MyGlobalIPAddress1) anywhere 63 0 0 ACCEPT all -- any any (MyGlobalIPAddress2) anywhere 74 0 0 ACCEPT all -- any any (MyGlobalIPAddress3) anywhere 85 0 0 ACCEPT all -- any any (MyGlobalIPAddress4) anywhere 96 0 0 ACCEPT all -- any any (MyGlobalIPAddress5) anywhere 107 0 0 ACCEPT all -- any any (MyGlobalIPAddress6) anywhere 118 0 0 ACCEPT all -- any any (MyGlobalIPAddress7) anywhere 129 0 0 DROP_FILTER all -- eth0 any 127.0.0.0/8 anywhere 1310 0 0 DROP_FILTER all -- eth0 any 10.0.0.0/8 anywhere 1411 0 0 DROP_FILTER all -- eth0 any 172.16.0.0/12 anywhere 1512 0 0 DROP_FILTER all -- eth0 any 192.168.0.0/16 anywhere 1613 1256 135K ACCEPT tcp -- any any anywhere anywhere state RELATED,ESTABLISHED 1714 23 2634 ACCEPT udp -- any any anywhere anywhere state RELATED,ESTABLISHED 1815 0 0 DROP_FILTER all -f any any anywhere anywhere 1916 15 540 ACCEPT icmp -- any any anywhere anywhere icmp echo-request limit: up to 1/sec burst 10 mode srcip htable-expire 60000 2017 47 2752 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh state NEW limit: up to 1/sec burst 3 mode srcip htable-expire 60000 2118 2 100 ACCEPT tcp -- any any anywhere anywhere tcp dpt:http state NEW limit: up to 5/sec burst 100 mode srcip htable-expire 60000 2219 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:https state NEW limit: up to 5/sec burst 100 mode srcip htable-expire 60000 2320 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:50000 state NEW limit: up to 1/sec burst 3 mode srcip htable-expire 60000 2421 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:50001 state NEW limit: up to 1/sec burst 3 mode srcip htable-expire 60000 2522 42 2041 DROP_FILTER all -- any any anywhere anywhere 26 27Chain FORWARD (policy DROP 0 packets, 0 bytes) 28num pkts bytes target prot opt in out source destination 29 30Chain OUTPUT (policy ACCEPT 1139 packets, 170K bytes) 31num pkts bytes target prot opt in out source destination 32 33Chain DROP_FILTER (6 references) 34num pkts bytes target prot opt in out source destination 351 42 2041 LOG all -- any any anywhere anywhere limit: avg 1/sec burst 5 LOG level warning prefix "DROP:" 362 42 2041 DROP all -- any any anywhere anywhere
iptablesに現れないnft (nftables) の設定が無いかを確認
nft (nftables) はインストールされていないことを確認。
sh
1$ nft list ruleset 2Command 'nft' not found, but can be installed with: 3sudo apt install nftables
ポート25は接続がタイムアウトする
ポート25を使用しているプロセスが存在しないことを確認。
sh
1$ sudo lsof -i:25 -P 2(何も表示されない)
ncコマンドで待ち受ける。
sh
1$ sudo nc -v -l -p 25 2Listening on [0.0.0.0] (family 0, port 25)
ncコマンドが待ち受け状態であることを確認。
sh
1$ sudo lsof -i:25 -P 2COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 3nc 12979 root 3u IPv4 149326 0t0 TCP *:25 (LISTEN)
待ち受けたポートに接続するが、接続できず。
sh
1$ telnet localhost 25 2Trying 127.0.0.1... 3telnet: Unable to connect to remote host: Connection timed out
待ち受けた側の端末には、何も表示されないまま、待ち受け状態を継続。
sh
1$ sudo nc -v -l -p 25 2Listening on [0.0.0.0] (family 0, port 25)
ポート26は接続・通信ができる
ポート25以外は問題ないことを確認するため、ポート26でも同様の確認を行った。
ポート26を使用しているプロセスが存在しないことを確認。
sh
1$ sudo lsof -i:26 -P 2(何も表示されない)
ncコマンドで待ち受ける。
sh
1$ sudo nc -v -l -p 26 2Listening on [0.0.0.0] (family 0, port 26)
ncコマンドが待ち受け状態であることを確認。
sh
1$ sudo lsof -i:26 -P 2COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 3nc 13020 root 3u IPv4 147320 0t0 TCP *:26 (LISTEN)
待ち受けたポートに接続接続できたので、適当な入力(hello world)を送った後に切断。
sh
1$ telnet localhost 26 2Trying 127.0.0.1... 3Connected to localhost. 4Escape character is '^]'. 5hello world 6^] 7 8telnet> Connection closed.
待ち受けた側の端末には、telnetで送った文字列が表示された後、待ち受け状態が終了した。
sh
1$ sudo nc -v -l -p 26 2Listening on [0.0.0.0] (family 0, port 26) 3Connection from localhost 44270 received! 4hello world
PREROUTING設定の確認
telnet localhost 25
の前後でiptables -L -v
のpkts増分を確認したところ、ポート25がINPUT ChainのNum1で処理されていないようだったので、PREROUTINGの設定を確認した。
sh
1$ sudo iptables -t nat -nvL 2Chain PREROUTING (policy ACCEPT 283K packets, 27M bytes) 3 pkts bytes target prot opt in out source destination 424439 1222K CNI-HOSTPORT-DNAT all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL 524439 1222K DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL 6 7Chain INPUT (policy ACCEPT 10280 packets, 505K bytes) 8 pkts bytes target prot opt in out source destination 9 10Chain OUTPUT (policy ACCEPT 746 packets, 52216 bytes) 11 pkts bytes target prot opt in out source destination 12 64 3840 CNI-HOSTPORT-DNAT all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL 13 0 0 DOCKER all -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL 14 15Chain POSTROUTING (policy ACCEPT 746 packets, 52216 bytes) 16 pkts bytes target prot opt in out source destination 17 0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0 18 746 52216 CNI-HOSTPORT-MASQ all -- * * 0.0.0.0/0 0.0.0.0/0 /* CNI portfwd requiring masquerade */ 19 0 0 CNI-56badc2626661f6c6c96897a all -- * * 10.88.0.32 0.0.0.0/0 /* name: "podman" id: "922cb983d42b740ec0b00c16003735844855af5d5c0beabf589008f1944dccc1" */ 20 21Chain CNI-56badc2626661f6c6c96897a (1 references) 22 pkts bytes target prot opt in out source destination 23 0 0 ACCEPT all -- * * 0.0.0.0/0 10.88.0.0/16 /* name: "podman" id: "922cb983d42b740ec0b00c16003735844855af5d5c0beabf589008f1944dccc1" */ 24 0 0 MASQUERADE all -- * * 0.0.0.0/0 !224.0.0.0/4 /* name: "podman" id: "922cb983d42b740ec0b00c16003735844855af5d5c0beabf589008f1944dccc1" */ 25 26Chain CNI-DN-56badc2626661f6c6c968 (1 references) 27 pkts bytes target prot opt in out source destination 28 0 0 CNI-HOSTPORT-SETMARK tcp -- * * 10.88.0.0/16 127.0.0.1 tcp dpt:25 29 48 2880 CNI-HOSTPORT-SETMARK tcp -- * * 127.0.0.1 127.0.0.1 tcp dpt:25 30 48 2880 DNAT tcp -- * * 0.0.0.0/0 127.0.0.1 tcp dpt:25 to:10.88.0.32:25 31 32Chain CNI-HOSTPORT-DNAT (2 references) 33 pkts bytes target prot opt in out source destination 34 76 4120 CNI-DN-56badc2626661f6c6c968 tcp -- * * 0.0.0.0/0 0.0.0.0/0 /* dnat name: "podman" id: "922cb983d42b740ec0b00c16003735844855af5d5c0beabf589008f1944dccc1" */ multiport dports 25 35 36Chain CNI-HOSTPORT-MASQ (1 references) 37 pkts bytes target prot opt in out source destination 38 0 0 MASQUERADE all -- * * 0.0.0.0/0 0.0.0.0/0 mark match 0x2000/0x2000 39 40Chain CNI-HOSTPORT-SETMARK (2 references) 41 pkts bytes target prot opt in out source destination 42 48 2880 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 /* CNI portfwd masquerade mark */ MARK or 0x2000 43 44Chain DOCKER (2 references) 45 pkts bytes target prot opt in out source destination 46 0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0
回答1件
あなたの回答
tips
プレビュー