CentOS を NAT NAPT (IP マスカレード) ルータ化した際の手順のメモ。
NIC を 2 枚刺ししており,片方を LAN 用,片方をグローバル用とする。それぞれの NIC の設定は完了している前提。
手順
まず,パケット転送を有効にする。
# echo "1" > /proc/sys/net/ipv4/ip_forward
# sed -i -e "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/" /etc/sysctl.conf
iptables の設定スクリプト (iptables-nat.sh) を作成する。
# vi iptables-nat.sh
#!/bin/sh
LAN_NIC=eth0
WAN_NIC=eth1
iptables の設定を初期化
# service iptables stop
# iptables -F
デフォルトのルールを設定
# iptables -P INPUT DROP
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
LAN 側サブネットマスク,ネットワークアドレスを取得
# LAN_NETMASK=<code>ifconfig $LAN_NIC | sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d</code> LAN_NETADDR=<code>netstat -rn | grep $LAN_NIC | grep $LAN_NETMASK | awk '{print $1}'</code>
IP マスカレードを有効化
# iptables -t nat -A POSTROUTING -o $WAN_NIC -s $LAN_NETADDR/$LAN_NETMASK -j MASQUERADE
ローカルループバックを許可
# iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 127.0.0.0/8 -j ACCEPT
LAN 側からのアクセスを許可
# iptables -A INPUT -i $LAN_NIC -j ACCEPT
LAN 側からのアクセスに対する外部からの応答を許可
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
外部にプライベートアドレス宛のパケットを流さないように
# iptables -A OUTPUT -o $WAN_NIC -d 127.0.0.0/8 -j DROP iptables -A OUTPUT -o $WAN_NIC -d 10.0.0.0/8 -j DROP iptables -A OUTPUT -o $WAN_NIC -d 172.16.0.0/12 -j DROP iptables -A OUTPUT -o $WAN_NIC -d 192.168.0.0/16 -j DROP
設定を保存
# service iptables save service iptables start
作成したスクリプトを実行する。
# sh ./iptables-nat.sh
OS 起動時に iptables を有効化する。
# chkconfig iptables on
参考ページ
- ファイアウォール構築 (iptables) – CentOSで自宅サーバー構築
(2010/10/11 追記)
NAT → NAPT (IP マスカレード) に修正した。
コメント