両方のインターフェイスを起動する前にファイアウォールを有効にする必要があります。

両方のインターフェイスを起動する前にファイアウォールを有効にする必要があります。

DigitalOceanに複数のサーバーがあり、それらが互いに通信できるようにしたいとします。

DigitalOceanはWAN接続とLAN接続を提供します。問題はどちらも安全だとは感じないということです。 WANはインターネットで、LANはDigitalOceanにコンピュータ(VPS)を持つすべての人が共有します。

そのため、WANで53、80、443などのいくつかのポートを除くすべてのポートをブロックしたいと思います。これは標準的な手順です。

その後、別のコンピュータにMySQLがある可能性があるので、IPアドレス10.1.1.1(実際にはDigitalOceanでは動作しないIPの例)に対してポート3306を開きたいと思います。

今私の問題は、インターフェイスが表示される前にファイアウォールルールを適用したいということです。

auto eth0 eth1 

iface eth0 inet static
        address 8.8.8.2  # some Internet address
        netmask 255.255.255.255
        gateway 8.8.8.1  # some Internet address
        dns-nameservers 8.8.8.8 8.8.4.4
        pre-up /etc/network/firewall

iface eth1 inet static
        address 10.1.1.1
        netmask 255.0.0.0
        pre-up /etc/network/firewall

私が思いついたのは、pre-up両方のインターフェースに追加することです。これにより、スクリプトが2回実行される前に起動されるようになります。これはスクリプトが2回実行されるという意味でもあります。

これはできますか?それとも、pre-upすべてのインターフェースに対してグローバルに同等の機能を達成するためのより良い方法はありますか?

注:オペレーティングシステムは、利用可能な最新バージョンのUbuntu 16.04.1です。

ベストアンサー1

私は実際に解決策を見つけました。私はUbuntu 16.04を使用していてsystemdを持っているので、スクリプトを生成してsnapinitfirewall.serviceファイアウォールコードにインストールしました。

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.service.html

[Unit]
Description=Snap! Websites firewall initialization
Before=network.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/etc/network/firewall
#ExecStop=... -- why would you ever want to remove your firewall rules?

[Install]
WantedBy=multi-user.target

# vim: syntax=dosini

/etc/network/firewall起動時にすべてのルールをすぐに復元するスクリプト。

そのパッケージに別のサービスファイルがあるため(つまり、1つのパッケージが両方のサービスを提供するため)、初期化を有効にして再起動時に実行するには、次の行を含める必要があります。

systemctl -q enable snapinitfirewall

pre-upこれは、ネットワークが起動する前に実行されていることを確認できるため、この機能を使用するよりも優れたアプローチです。

もっと気になる方のために、スナップショットファイアウォールプロジェクトgithubから。

おすすめ記事