備忘録のため,内容の正当性については責任を持ちません。

CentOS  を NAT NAPT (IP マスカレード) ルータ化した際の手順のメモ。

NIC を 2 枚刺ししており,片方を LAN 用,片方をグローバル用とする。それぞれの NIC の設定は完了している前提。


手順

まず,パケット転送を有効にする。

# echo "1" > /proc/sys/net/ipv4/ip_forward

<h1>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

<h1>iptables の設定を初期化</h1>

service iptables stop
iptables -F

<h1>デフォルトのルールを設定</h1>

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

<h1>LAN 側サブネットマスク,ネットワークアドレスを取得</h1>

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>

<h1>IP マスカレードを有効化</h1>

iptables -t nat -A POSTROUTING -o $WAN_NIC -s $LAN_NETADDR/$LAN_NETMASK -j MASQUERADE

<h1>ローカルループバックを許可</h1>

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 127.0.0.0/8 -j ACCEPT

<h1>LAN 側からのアクセスを許可</h1>

iptables -A INPUT -i $LAN_NIC -j ACCEPT

<h1>LAN 側からのアクセスに対する外部からの応答を許可</h1>

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

<h1>外部にプライベートアドレス宛のパケットを流さないように</h1>

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

<h1>設定を保存</h1>

service iptables save
service iptables start

作成したスクリプトを実行する。

# sh ./iptables-nat.sh

OS 起動時に iptables を有効化する。

# chkconfig iptables on

参考ページ


(2010/10/11 追記)

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

参考ページ

コメント

コメントする




CAPTCHA