web-dev-qa-db-ja.com

iptablesとdhcpdを使用したポートフォワーディング

セットアップ:アパート全体のゲートウェイとして機能するLinux(Gentoo、それが違いを生む場合)ボックスがあります。このボックスは、iptablesとdhcpdを使用してNATマジックを実行します。

問題:ポートを転送したい特定のコンピューターがあります(トレントの場合、ここでも違いがあります)。

私はハウツーを読んで適切に構成するのに十分なLinux管理スキルを持っていますが(最終的に)、私の場合に見つけたハウツーは不明確で、不必要に複雑であるように見えました。

私が収集したものの場合、私の問題は2つあります。dhcpdに特定の静的IPを必要なコンピューターに確実に割り当てさせることと、ポート転送用にiptablesを構成することです。

誰かが私にこれを行う方法の明確なステップバイステップのガイドを教えてもらえますか?これをやりたいのは私だけではないと確信しています...


編集:ソフトウェアの私のバージョンは次のとおりです。

#iptables --version 
 iptables v1.4.0 
 
#dhcpd --version 
 isc-dhcpd-V3.1.1-Gentoo 
1
Henrik Paul

Dhcpが特定の静的IPを目的のコンピューターに確実に割り当てるようにするには、通常、dhcpサーバー(実行しているサーバー)にMacアドレスをIPアドレスに静的にマップするように指示する方法を調べます。これにより、常に同じIP(指定したもの)がそのMacアドレスに渡されます。

ISC dhcpには、次のような構成スタンザが必要です。

Host mycomputer {
  hardware ethernet 00:12:34:56:78:9A;
  fixed-address 192.168.1.10;
}

dnsmasqには次のような行が必要です。

dhcp-Host=00:12:34:56:78:9A,192.168.1.10

その詳細は manpage で指定されています。

どこ:

  • mycomputerはコンピューターのホスト名です
  • 00:12:34:56:78:9AはコンピューターのMACアドレスです
  • 192.168.1.10は、そのMacアドレスに常に割り当てたいIPです。

これが完了すると、ポート転送を行うための「静的」IPが得られます。これを行うには、@ Avery Payneが言うように、次のことを行います。

iptables -t nat -I PREROUTING -s ! {internal-network} -d {public-address} -p tcp --dport {port-on-public-address} -j DNAT --to-dest {internal-address}

どこ:

  • internal-networkは、ネットワークを表すIPアドレスです。つまり、192.168.1.0です。
  • internal-addressは、公開するホストを表すIPアドレスです。つまり、192.168.1.10
  • public-addressは、ISPに面しているインターフェイスのIPアドレスです。
  • port-on-public-addressは、内部コンピューターがトラフィックを認識できる場合にトラフィックが到達するポート番号です。このルールは転送時にポート番号を変更せず、単にパケットを渡すだけであることに注意してください

-s、感嘆符、および{internal-network}の間のスペースに注意してください。必ず、両側にスペースを入れてください。

6
pjz

iptables -t nat -I PREROUTING -s ! {internal-network} -d {public-address} -p tcp --dport {port-on-public-address} -j DNAT --to-dest {internal-address}

どこ:

  • internal-networkは、ネットワークを表すIPアドレスです。つまり、192.168.1.0です。
  • internal-addressは、公開するホストを表すIPアドレスです。つまり、192.168.1.2です。
  • public-addressは、ISPに面しているインターフェイスのIPアドレスです。
  • port-on-public-addressは、内部コンピューターがトラフィックを認識できる場合にトラフィックが到達するポート番号です。このルールは転送時にポート番号を変更せず、単にパケットを渡すだけであることに注意してください

-s、感嘆符、および{internal-network}の間のスペースに注意してください。必ず、両側にスペースを入れてください。

3
Avery Payne