1. ホストサービスポート#
$ iptables -I INPUT -p tcp --dport 80 -j DROP
$ iptables -I INPUT -p tcp -s 1.2.3.4 --dport 80 -j ACCEPT
ここでは 1.2.3.4
のみがローカルホストの 80 ポートにアクセスできます。
2. Docker サービスポート#
docker run -d -p 80:80 shaowenchen/demo-whoami
のように実行されるサービスに対しては、上記の方法は無効で、DOCKER-USER チェーンにルールを追加する必要があります。
Docker は iptables ルールを DOCKER チェーンに追加しますが、Docker の前にルールを追加する必要がある場合は DOCKER-USER チェーンに追加する必要があります。
$ iptables -I DOCKER-USER -i ens190 ! -s 1.2.3.4 -p tcp --dport 80 -j DROP
ens190 はローカルのネットワークインターフェースで、ここでは 1.2.3.4
のみがローカルホストの 80 ポートにアクセスできます。
3. 環境のクリーンアップ#
$ yum install -y iptables-services
$ systemctl restart iptables.service
ホストが再起動した後も iptables 設定が有効である必要がある場合は、iptables-services をインストールして保存する必要があります。
$ yum install -y iptables-services
$ service iptables save