iptables v1.4.21: マッチ `-d' をロードできませんでした: そのようなファイルまたはディレクトリはありません

iptables v1.4.21: マッチ `-d' をロードできませんでした: そのようなファイルまたはディレクトリはありません

私は kerenl 3.14.18 を実行しており、iptables 1.4.21 を使用しています。これは、--static-enable --disable-shared オプションでビルドされています。このコマンドを実行すると: /sbin/iptables -A PREROUTING -m -d 127.3.0.2/24 -j DNAT --to-destination 10.0.0.1 -p udp -dport 69 次のエラー メッセージが表示されます: iptables v1.4.21: 一致する `-d' をロードできませんでした: そのようなファイルまたはディレクトリはありません

何が足りないのか説明してくれる人はいますか? よろしくお願いします。

答え1

こんにちは。私は eth0 と eth1 という 2 つのインターフェースを持つホスト システムを持っています。eth0 は 127.3.xx の IP を持つパケットを受信します。これらのパケットを eth1 からサーバー (10.0.1) に転送したいと考えています。eth1 の IP は 192.168.0.100 です。サーバーはパケットがホスト (192.168.0.100) から来ているかのように認識する必要があります。-m フラグを削除できると思いますが、削除すると次のエラーが発生します: iptables v1.4.21: 複数の -d フラグは許可されていません

これを実現するには、次の iptables ルールを使用します。

iptables -t nat -A PREROUTING -d 127.3.0.2/24 -p udp --dport 69 -j DNAT --to-destination 10.0.0.1 iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100

ただし、127.3.0.2/24 を単一の IP (つまり 127.3.0.2) または有効な CIDR 範囲 (例: 127.3.0.0/24) に置き換える必要があります。/24 は 127.3.0.0-127.3.0.254 をカバーするため、127.3.0.2/24 は有効な CIDR 範囲ではありません。これにより、その範囲内の IP へのトラフィックもすべて 10.0.0.1 のポート 69 にリダイレクトされます。

また、ポート 69 は TFTP なので、言及しておく必要があると思います。これを PXE ブートまたはその他の DHCP ベースのソリューションに使用しようとすると、ほとんどのベンダーが PXE を使用してサブネットを通過できないため、機能しない可能性が高くなります。

関連情報