web-dev-qa-db-ja.com

DockerコンテナのIPテーブルを一覧表示する

Ubuntu 16.04 Dockerコンテナでiptablesコマンドを実行したい。 root権限を持つユーザーを作成してユーザーをSudoグループに追加しましたが、iptablesをrootとして実行していないというメッセージが引き続き表示されます。

_$ groups
stack root Sudo

$ Sudo whoami
root

$ Sudo iptables --list
iptables v1.6.0: can't initialize iptables table `filter': Permission 
denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
_

私の_/etc/sudoers_ファイルには、%Sudo ALL=(ALL:ALL) ALLという行があります。これにより、Sudoグループ(私)のすべてのユーザーがコマンドを実行できるようになりますが、アクセス許可拒否エラーが表示されます。

このユーザーとしてiptablesコマンドを正常に実行するにはどうすればよいですか?

これをDockerコンテナで画像付きで実行していることに注意してください:_ubuntu:16.04_

10
northsideknight

能力

コンテナー内でiptablesアクセスを許可する場合は、コンテナーを最初に実行するときに、--cap-add=NET_ADMINスイッチを介して特定の機能を有効にする必要があります。

$ docker run --cap-add=NET_ADMIN -it ubuntu:16.04

次に、コンテナでiptablesSudoを設定します。

# apt update -y
# apt-get install iptables Sudo -y

次に、コンテナ内でユーザーuser1を設定し、それをSudoグループに追加します。

# adduser user1
# adduser user1 Sudo

次に、ユーザーをuser1に設定します。

# su - user1

user1's Sudo権限を確認します。

$ Sudo -l
[Sudo] password for user1:
Matching Defaults entries for user1 on 1356bf8bd61a:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User user1 may run the following commands on 1356bf8bd61a:
    (ALL : ALL) ALL

iptables経由でSudoにアクセスできるかどうかを確認します。

$ Sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

参考文献

17
slm