CentOS 5.5 + iptables で NAT ルータを構築する

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

参考ページ


(2010/10/11 追記)

NAT → NAPT (IP マスカレード) に修正した。

参考ページ

コメント

タイトルとURLをコピーしました