Debian では、特定のユーザーの特定のポートへのアクセスを制限しようとしています。
ユーザーIDが1000でブロックするポートが5000であるとします。
次のコマンドでiptablesを使用しようとしています。
iptables -I OUTPUT -o lo -p tcp --dport 5000 --match owner --uid-owner 1000 -j DROP
ユーザーが実行curl 127.0.0.1:5000
または実行すると機能しますcurl <machine_ip>:5000
が、ユーザーが実行しても効果はありませんcurl localhost:5000
。
なぜ動作しないのか理解できません。私localhost
はに変換されましたが、127.0.0.1
違いは何ですか?
私の/etc/hostsファイルに
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
答え1
IPv6も同じことを行います... localhostはIPv4とIPv6の両方のアドレスをチェックし、v6が優先されます。
編集1:
ip6tables -I OUTPUT -o lo -p tcp --dport 5000 --match owner --uid-owner 1000 -j DROP