On Mon, Jan 02, 2017 at 10:05:38PM +0900, Yasuhiko Kamata wrote:
iptables -A INPUT -p tcp -s 192.168.3.XXX --dport 22 -j REJECT
と言う設定をホスト側で行えば、192.168.3.XXX からのアクセスは、 ホスト、ゲスト共に拒否出来ると考えました。
しかし、実際にやってみると、ホスト側はアクセス制限が効くのですが、 ゲスト側には効かず、素通しになってしまいます。
iptables の仕様はゲスト側には効かない、と思って良いのでしょうか。
INPUTは対象のマシンの入力としてパケットを受け取ったとき、 つまりLinuxマシンから見て自分宛のパケットであると認識した場合にのみ 動作する仕組みです。FORWARD, OUTPUTについても同様に、それぞれその マシンが処理する転送や出力に対してのみ動作し、それ以外のパケットは そもそもiptablesのキューに入ってきません。
なので、やるとしたらデフォルトのfilterテーブル (-t filter)ではなく、 mangleテーブル (-t mangle) に対して設定するか、ブリッジのフィルタ (ebtables)を使用すると期待通りに動作するのではないかと思います。
やってみました。 iptables -t mangle -A INPUT -p udp --sport 67:68 -j DROP で追加してみました。 なお、mangle の時はREJECTは使えず。 iptables -nvL -t mangle Chain PREROUTING (policy ACCEPT 22389 packets, 14M bytes) pkts bytes target prot opt in out source destination Chain INPUT (policy ACCEPT 15167 packets, 11M bytes) pkts bytes target prot opt in out source destination 5 1950 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spts:67:68 となって、一応パケットが引っかかるように見えたのですが、 やはりゲスト側にはパケットが渡されています。 おそらくあと何か足らないような気がしますが、うーん、何だろう。 なお、ebtables については入っていなかったので追加してみましたが、 設定が悪かったのかうまく引っかからず。 ribbon -- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-ja+owner@opensuse.org