IP Masqueradeがうまくいかない

→解決編 IP Masqueradeがうまくいかなかった件(解決) - blob glob
3月に吹っ飛んだサーバをUbuntu 10.04LTS Serverで復旧中だけど、IP Masqueradeがうまくいかない。
ローカルネットワーク内にサブネットを作り、IP Masqueradeでサブネットから外へ通信できるようにしたい。

ローカルネットワーク:192.168.100.0/24
ローカル内サブネット:192.168.0.0/24

という変な構成だけど、全部のマシンの設定を変えるのはめんどくさいので、ここは変えたくない。サブネットマスクが同じだから厳密にはサブネットとは言わないのかしらん。


iptablesを設定するため、ローカル内サブネットのルータマシンで、次のようなスクリプトを書いた。

#!/bin/sh

EXTIP=192.168.100.20 #外向きIP
EXTIF=eth0
INTIP=192.168.0.254 #内向きIP
INTIF=eth1
INTNET=192.168.0.0/24 #ローカル内サブネット
IPTABLES=/sbin/iptables
LSMOD=/sbin/lsmod
MODPROBE=/sbin/modprobe

if ! $LSMOD | grep -q ^ip_tables ; then
  $MODPROBE ip_tables
fi
if ! $LSMOD | grep -q ^iptable_nat ; then
  $MODPROBE iptable_nat
fi
if [ 0 = `cat /proc/sys/net/ipv4/ip_dynaddr` ]; then
  echo 1 > /proc/sys/net/ipv4/ip_dynaddr
fi

# clear
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X

# policy
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

# IP masquerade
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -s $INTNET -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -s $INTNET -j MASQUERADE

# log
$IPTABLES -N LOGGING
$IPTABLES -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit
$IPTABLES -A LOGGING -j DROP
$IPTABLES -A FORWARD -j LOGGING

いずれにせよローカルネットワーク内なので、INPUTもOUTPUTも素通し。FORWARDだけ制限をかける。
内部から外部への接続は許可し、確立済みの通信も許可。そしてIP Masquerade。


これを実行しても、サブネット内のマシンからローカルネットワーク内の(サブネット外の)マシンへのpingすら通らない。何故だろう。