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すら通らない。何故だろう。