私の別のスレッドでは、iptablesのポリシーと状態に関するいくつかの興味深いことについて話していましたが、DHCPがどのように機能し、iptablesがそれをどのように理解するかについて詳しく知りたいと思います。
ETH0は、ルーターから動的IPを受信するメインスイッチに接続され、インターネットアクセスだけでなく、外部ネットワークへのアクセスも取得します。
ETH1は、XクライアントがこのサーバーからIPSを受信する内部スイッチに接続されている内部カードです
ETH1ネットワークは192.168.1.0/255.255.255.0で、サーバーIPは192.168.1.254です。
私が理解したところによると、dhcpはbootpプロトコルであるため、ファイアウォールポリシーですべてを削除する場合でも、ネットワークはDHCPを受信します。これは、私が行ったテストではtrueのようです。
tcpdumpから:
root@test:~# tcpdump -i eth1 port 67 or 68
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:34:03.943928 IP 192.168.1.2.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:0c:29:29:52:8b (oui Unknown), length 303
11:34:03.957647 IP 192.168.1.254.bootps > 192.168.1.2.bootpc: BOOTP/DHCP, Reply, length 300
11:34:06.492153 IP 192.168.1.2.bootpc > 192.168.1.254.bootps: BOOTP/DHCP, Request from 00:0c:29:29:52:8b (oui Unknown), length 303
11:34:06.506593 IP 192.168.1.254.bootps > 192.168.1.2.bootpc: BOOTP/DHCP, Reply, length 300
iptablesが何をするかを確認するために簡単なログルールを作成しました:
root@test:~# tail -f /var/log/syslog
Oct 15 11:30:58 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9527 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:31:43 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9529 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:33:32 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9531 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:34:03 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9533 PROTO=UDP SPT=68 DPT=67 LEN=311
これがその瞬間の私のiptablesルールです:
# deny all traffic
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
# Use stateful inspection feature to only allow incoming connections
# related to connections I have already established myself
$IPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# allow all traffic on lo interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
したがって、デフォルトのポリシーですべてをドロップしても、ネットワークでDHCPを取得できますが、IPの更新などにはかなり時間がかかります。
ファイアウォールに次のルールを追加した場合:
$IPT -I OUTPUT -o $INTIF -p udp --dport 67:68 --sport 67:68 -j ACCEPT
すべてのクライアントdhcpを更新するには、かなり時間がかかります。
上記を考慮:
- ブロックされていないのに更新するのに実際に時間がかかるのはなぜですか?
- dhcpサーバーをオフにすることなく、それを完全に削除することは可能ですか?
- BOOTPを使用してiptables内のdhcpサーバーを受け入れることは可能ですか?それはどのように行われますか?
あなたが良いリンクを知っているなら、私はたくさん取っても構わないと思います:)
Are you monitoring the network interface in promiscuous mode
私がまだ学んでいるとはどういう意味ですか