NATルーターとして機能する単純なUbuntuシステムから着信トラフィックを破棄するのに問題があります。
これまで私がしたこと:
net.ipv4.ip_forward=1
有効にしました/etc/sysctl.conf
NATを有効にするには、iptablesで有効にします。
sudo iptables ! -o lo -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
いいですね。すべてが期待どおりに動作します。
今WANインターフェイスから着信トラフィックを削除したいと思います。だから私は次のことをしました。
# SSH still allowed
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT )
それから:
sudo iptables -A INPUT -i eth0 -j DROP
残念ながら、最後のコマンドはシステム自体のすべてのhttpトラフィックをブロックします。発信トラフィックは許可されなくなりました。 NATシステムではまだ動作します。
sudo iptables -A INPUT -i eth0 -j DROP
したがって、インターネットトラフィックのみをブロックしたい場合、このルールは間違っているようです。
答え1
(tcp)接続は双方向にデータを転送することを忘れないでください。簡単なコマンドには以下がcurl google.com
含まれます。
- DNSサーバークエリ
- DNSサーバーから応答を受け取る
- リモートWebサイトにHTTPリクエストを送信する
- リモートウェブサイトからHTTP応答を受信する
すべての着信トラフィックブロックを使用すると、-A INPUT -i eth0 -j DROP
すべてのトランザクションの「受信...」部分がブロックされます。少なくともESTABLISHED
接続に関連するトラフィックを許可する必要があります。現在実行中の作業の簡単なファイアウォールは次のとおりです。
# Allow RELATED and ESTABLISHED traffic
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow ICMP traffic
-A INPUT -p icmp -j ACCEPT
# Allow all traffic on lo. This isn't strictly necessary for what you're
# doing, but it helps avoid shooting yourself in the foot later
# on.
-A INPUT -i lo -j ACCEPT
# Allow new ssh connections
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
# Reject anything else coming in on eth0. You could use
# DROP here if you prefer.
-A INPUT -i eth0 -j REJECT --reject-with icmp-host-prohibited
(これはFedoraのパッケージで生成されたデフォルトのファイアウォールルールセットですiptables-services
。)