IP Masquerade

IP masquerade または IP masquerading とは Linux をルータのように使ってそこで IP アドレスを変換する機構です。 一種の万能 proxy ともいえます。 ルータで最近よく使われている NAT の強化版です。

Linux に IP Masquerade させる方法は Linux IP Masquerade mini HOWTO に詳しく書かれています。 これを読んでカーネルを再構築すればいいだけです。

再構築されたカーネルに IP Masquerade のルールを教えるには, 古いカーネルなら ipfwadm,今の 2.2 系カーネルなら ipchains を使います。 ipchains については Linux IPCHAINS-HOWTO に詳しく解説されています。

たとえば次のように打ち込みます。 -P は policy の意味です。 -A は append を表し,打ち込む順序に意味があります。

# 基本ポリシーは拒否
/sbin/ipchains -P forward DENY
# destination が自アドレスならルーティングする
/sbin/ipchains -A forward -d 192.244.75.0/24 -j ACCEPT
# そうでなくて source が自ネットワークなら Masquerade
/sbin/ipchains -A forward -s 192.244.75.0/24 -j MASQ
# 自ネットワークにはプライベートIPアドレスもたくさんある
/sbin/ipchains -A forward -s 192.168.0.0/16 -j MASQ
/sbin/ipchains -A forward -s 10.0.0.0/8 -j MASQ

ftp は最初調子が悪かったのですが, modprobe ip_masq_ftp したらできるようになりました。

最終的なものです:

# transparent proxy
/sbin/ipchains -A input -p tcp -d ! 192.244.75.0/24 80 -j REDIRECT squidの待ち受けポート
# default: deny routing
/sbin/ipchains -P forward DENY
# outbound packets from global addresses are accepted
/sbin/ipchains -A forward -s 192.244.75.0/24 -j ACCEPT
# cat /proc/sys/net/ipv4/ip_local_port_range
/sbin/ipchains -A forward -d 192.244.75.0/24 1024:4999 -p tcp -j ACCEPT
# NNTP server
/sbin/ipchains -A forward -d 192.244.75.1 119 -p tcp -j ACCEPT
/sbin/ipchains -A forward -d 192.244.75.1 -j DENY
# NNTP server
/sbin/ipchains -A forward -d 192.244.75.10 119 -p tcp -j ACCEPT
/sbin/ipchains -A forward -d 192.244.75.10 -j DENY
# other inbound packets to global addresses are accepted
/sbin/ipchains -A forward -d 192.244.75.0/24 -j ACCEPT
# IP masquerade private addresses
/sbin/ipchains -A forward -s 10.0.0.0/8 -j MASQ
/sbin/ipchains -A forward -s 192.168.0.0/16 -j MASQ

リンクはご自由にどうぞ。

松阪大学 奥村晴彦 okumura@matsusaka-u.ac.jp

Last modified: Tue Mar 13 21:00:57 JST 2001