わからないこと
rebootすると、osの起動後、自分で設定したiptablesのruleが反映されません。
環境
ubuntu 16.04.6
docker 18.09.6
kubernetes 1.13.5(rkeを使って構築しました。)
調べたこと
etc/network/if-pre-up.d/iptables_start
で、iptablesを反映するscriptを書きました。
- 同様のサーバー環境を用意し、kubernetesをinstallせずに
reboot
した場合は反映されます。 - 問題のサーバーでetc/network/if-pre-up.d以下に、
touch hoge
のようなscriptが実行されたことを確認するようなファイルを作ると、確かにhoge
が作られます。
ので、os起動までは一度iptableが反映されていると思われます。
が、ログインし、iptables -L
を実行すると、dockerやkuberentesのiptablesの設定は反映されているのですが、自前の設定は反映されません。まるで、dockerらがiptables -F
した後に、設定を追加したような挙動です。
etc/network/if-pre-up.d/iptables_start
をログイン後実行するとその設定は維持されます。
追記2019/5/16
いくつか挙動を確認したところ、どうやらiptables-restore
が実行されるタイミングで、設定の反映が途中で止まるようでした。
ログを見たところ、
log
1 ifup[829]: iptables-restore v1.6.0: Set cali40masq-ipam-pools doesn't exist. 2ifup[829]: Error occurred at line: 179
とありまして、関連する記事としては、StarlingX Projectの開発者ページ?がありまして、
puppetなるソフトウェアと、DockerやKubernetesで指定したiptablesの内容が競合して、適用されなくなるバグがあると報告しています。
しかし、puppetはinstallしていません。
/if-pre-up.d以下で、iptablesをいじるのはiptables_start
のみなのですが、それでも何かとぶつかっているのでしょうか。
さらに追記 同日
こちらでは、systemdにやらせると良いということで、次のようにserviceを作りました。
root@instance1:~# cat /etc/network/iptables #!/bin/bash /sbin/iptables-restore < /etc/iptables.rules exit 0 root@instance1:~# cat /etc/systemd/system/router-rules.service [Unit] Description = Apply base firewall rules for router functionality [Service] Type=oneshot ExecStart=/etc/network/iptables [Install] WantedBy=network-pre.target root@instance1:~# systemctl enable router-rules.service root@instance1:~# reboot
再起動後、
root@instance1:~# systemctl status router-rules.service ● router-rules.service - Apply base firewall rules for router functionality Loaded: loaded (/etc/systemd/system/router-rules.service; enabled; vendor preset: enabled) Active: inactive (dead) since Thu 2019-05-16 03:21:48 JST; 22s ago Process: 619 ExecStart=/etc/network/iptables (code=exited, status=0/SUCCESS) Main PID: 619 (code=exited, status=0/SUCCESS) May 16 03:21:48 instance1 systemd[1]: Starting Apply base firewall rules for router functionality... May 16 03:21:48 instance1 iptables[619]: iptables-restore v1.6.0: Set cali40masq-ipam-pools doesn't exist. May 16 03:21:48 instance1 iptables[619]: Error occurred at line: 179 May 16 03:21:48 instance1 iptables[619]: Try `iptables-restore -h' or 'iptables-restore --help' for more information. May 16 03:21:48 instance1 systemd[1]: Started Apply base firewall rules for router functionality.
と表示されます。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。