unreal-info

iptablesでlinuxルーターを作る

最近、linuxで自作ルータを作りたい人をよく見るのだが 実はカーネル2.2と2.4ではまったく作り方が違う。 最近のディストリが採用しているカーネル2.4系では iptablesというコマンドしかうまく使えないのだが実は 公式ドキュメントが凄く複雑な上に、明快な例が無い為、 全く分からない。しかも、web検索でも資料が見つからない。 今日、友人にiptablesの使い方を聞かれ、今だ同じ状況のようなので ここにiptablesの極秘メモを公開することにした。 (以下は、/etc/rc.local にするように書きました)

( # <-- これで始まる行は、説明文として行末まで無視されます)

# for MASQ
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
このコマンドだけですでにルータとしての機能を果たす。 echoで、カーネルにルーティング機能を有効にさせ、 iptablesによってカーネルにルーティング情報を設定する。 ppp0の部分は、各自のネット接続環境により名前変えねばならない つまり、ネットに接続された側のインターフェイス名を指定する。
------> ADSL,ISDNで、 PPPoEかpppdで接続--------> ppp0
------> ISDN,アナログで、PPxPを使い接続----------> tun0
------> ケーブル等で、特殊モデムを使い接続-------> eth0

以下は、iptablesによるポートフォワードの方法である これにより、Linuxルータ越しで特殊なゲームをしたり LAN内マシンで、サーバを立てたりすることが出来る。 (この部分の資料が今だwebに存在しないそうだ)

# for Serious Sam
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 4000 -i ppp0 -j DNAT --to 192.168.0.2
/sbin/iptables -t nat -A PREROUTING -p udp --dport 25600 -i ppp0 -j DNAT --to 192.168.0.2

# for AOE & AOC (require DirectPlay)
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 1100:5000 -i ppp0 -j DNAT --to 192.168.0.2
/sbin/iptables -t nat -A PREROUTING -p udp --dport 1100:7000 -i ppp0 -j DNAT --to 192.168.0.2 

# for DirectPlay
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 47624 -i ppp0 -j DNAT --to 192.168.0.2
/sbin/iptables -t nat -A PREROUTING -p udp --dport 47624 -i ppp0 -j DNAT --to 192.168.0.2
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 2300:2400 -i ppp0 -j DNAT --to 192.168.0.2
/sbin/iptables -t nat -A PREROUTING -p udp --dport 2300:2400 -i ppp0 -j DNAT --to 192.168.0.2

# for UnrealTournament
/sbin/iptables -t nat -A PREROUTING -p udp --dport 7777:8000 -i ppp0 -j DNAT --to 192.168.0.2
# for Server
# /sbin/iptables -t nat -A PREROUTING -p udp --dport 27900 -i ppp0 -j DNAT --to 192.168.0.2

# for CounterStrike
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 27005:27015 -i ppp0 -j DNAT --to 192.168.0.2
/sbin/iptables -t nat -A PREROUTING -p udp --dport 27005:27015 -i ppp0 -j DNAT --to 192.168.0.2
簡単に説明すると -p でプロトコル, --dport でポート, -i でインターフェイス,--to でLAN内のマシンのIPを指定する。 分からない人はポートフォワード等の概要を理解した後、 JAC BBS等で質問してくれれば、答えると思います。 (ポートフォワードから説明してくださいってのは勘弁) (Fanks,私的な使用スマソ) JACへのリンクは、一番下にあります。

追記

kondara2.0ならば、設定した後に、
# /sbin/iptables-save > /etc/sysconfig/iptables
として、iptablesのデーモンを動かしておくと、再起動しても 設定が保たれます。 (/etc/rc.d/rc.localに書くのはスマートじゃないという人に必須)