dockerとiptables
クラウドサーバーを利用する場合、ファイアウォール(Firewalld/iptables)の設定に失敗して「リモート端末からサーバーへログイン出来なくなる」というリスクは絶対に避ける必要があります。そのリスク回避のため、このサーバーではファイアウォール機能を自動起動から外しています(サーバー再起動時にファイアウォールは自動起動しない)が、最近導入して楽(苦)しんでいる「docker」はファイアウォールが稼働している場合、その機能を前提としているので、ファイアウォールを後から起動した場合には、折角自動起動に成功したdockerですが、外部と通信する場合には再起動が必要です。さらにファイアウォール側に設定するdockerの仮想ネットワーク名を固定するには以下の設定が必要で、この設定が無いとdockerは毎回ランダムなインタフェース名を付けるのでファイアウォール側で毎回再設定が必要となってしまいます、、、というか「前回」の設定では再起動するとインタフェース名が変わるので気が付きました(笑)
仮想ネットワーク名を固定する設定は以下の通りです。
「com.docker.network.bridge.name:」に任意のネットワーク名を付けることが出来ます。ここで付けた名前が「ifconfig」でインタフェース名として表示されるのでFirewalld/iptablesではその名称が使用できます。
version: '3'
services:
app:
build: ./php-fpm
image: php-fpm_app
networks:
- docker-net
ports:
- 9001:9000
volumes:
- /var/www/html/wp:/var/www/html/wp
networks:
docker-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.18.0.0/16
driver_opts:
com.docker.network.bridge.name: bridge0
サーバー再起動時にファイアウォールが起動しないと危ないと思われるかもしれませんがAWS/EC2はVPC上で稼働しているため、VPCのネットワークACLで除外必須のアドレスは出禁にしています。ネットワークACLでの遮断では、そもそもネットワークトラフィックがサーバーへ到達しませんのでサーバー自体は完ぺきに守られていると言えます。サーバー上のファイアウォールはあくまでもネットワークACLで除外するためのIPアドレスのあぶり出しに使っているに過ぎません。
最終更新日: 2021年1月10日