私が望むのは、WANへのアクセスをブロックし、これらのホストが192.168.1.0/24 LANで互いに通信できるようにすることです。この構成はそのホストで行う必要があります。
同様の投稿もありますが、ユースケースがあまりにも具体的または複雑すぎる場合が多いです。これでギガバイトあたりの費用を支払います。一度設定されると、実際にWANアクセスは必要ありませんが、多くのデータを使用しているように見えるVMがいくつかあります。 (何らかの理由でLDAPサーバー?)
DD-WRTフィルタリングを調べていますが、ホスト側でどうするか知りたいです。
また、1 日に 1 時間 WAN アクセスを有効にすることも検討します。これは「」で行うことができます。iptablesスクリプト「CRONを使用するか、DD-WRT経由で使用してください。
IPTablesが最善の選択だと思います。私のすべてのサーバーはIPTableを使用し、一部はUFWを使用し、一部はFirewallDを使用すると思います。
私はこれがおそらく「一般的な質問」だと思いますが、ほとんどの答えは多くの/すべてのディストリビューションに適用する必要があります。しかし、ちなみに私は主にUbuntu 14/16とCentOS 6/7を使います。
答え1
フィルタリング用IPテーブル
これは、許可されたトラフィックのルールセットを作成し、残りを破棄することによって達成できます。
チェーンの場合は、OUTPUT
ループバックトラフィックとネットワークトラフィックを許可するルールを作成します192.168.1.0/24
。一致するルールがない場合は、基本操作が適用されますREJECT
。に設定されます。
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
iptables -P OUTPUT REJECT
チェーンの場合、INPUT
同様のルールを作成できます。ループバックとローカルネットワークのトラフィックを許可し、残りの部分を破棄します。
単一のルールを使用して、確立されたトラフィック(ホストが開始した接続への応答トラフィック)を一致させることができます-m conntrack --ctstate ESTABLISHED
。これにより、インターネットアクセスを有効にしたい場合にチェーンを変更する必要がなくなります。この方法は、ローカルネットワークの外部からの接続が必要なプログラム/デーモンを実行しない場合に機能します。
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
ローカルネットワークの外部から開始された接続を許可する必要がある場合は、INPUT
同じ方法でチェーンを構成し、OUTPUT
同様のメカニズムを使用して適用する必要があります。
無制限(WANアクセス)ネットワークアクセスを許可するには、デフォルトのタスクをに変更しますACCEPT
。制限を復元するには、デフォルトの操作をもう一度変更してくださいREJECT
。最後のルールを追加/削除しても-j ACCEPT
同じ効果が得られます。
iptables -P OUTPUT ACCEPT
また、使用することができますiptables 時間モジュールは、一日の特定の時間のトラフィックを許可します。この場合、cronを使用する必要はありません。たとえば、12:00 から 13:00 の間のトラフィックを許可するには、ルールは次のようになります。
iptables -A OUTPUT -m time --timestart 12:00 --timestop 13:00 -j ACCEPT
答え2
削除デフォルトパス
ホストのルーティングテーブルからデフォルトパスを削除すると、そのホストがローカルネットワーク外の他のホストと通信できなくなります。デフォルトパス設定は、デフォルトパスの追加とデフォルトパスのip route
削除です。ip route default add ...
ip route del default
ルーターからのトラフィックがまだホストに到達する可能性があります。有効にすると、送信元アドレスへの既知のルートがないトラフィックを破棄できます。リバースパスフィルタリング。
リバースパスフィルタリングを設定する方法は2つあります。システム制御またはiptables。これシステム制御このメソッドはipv4でのみ機能し、iptablesルールはipv4とipv6の両方に対して作成できます。
リバースパスフィルタリングを有効にするには、次のようにします。システム制御
rp_filter
:sysctl net.ipv4.conf.all.rp_filter = 1
そしてiptables、使用
rpfilter
基準寸法:iptables -t raw -I PREROUTING -m rpfilter --invert -j DROP
にも同じ規則が適用されます
ip6tables
。nftables、使用fib
氏名。
デフォルトパスを削除して復元するには、cronで簡単なスクリプトを使用できます。
#!/bin/sh -e
FILE="/root/default.gw"
case "$1" in
"remove")
route="$(ip route show default 0.0.0.0/0)"
if [ -z "$route" ]; then
echo "no default route configured"
exit 1
fi
echo "$route" > $FILE
ip route del default
ip route flush cache
;;
"restore")
route="$(cat $FILE)"
if [ -z "$route" ]; then
echo "no default route saved"
exit 1
fi
ip route add $route
;;
*)
echo "invalid argument"
echo "usage: $(basename -- $0) remove|restore"
exit 1
esac