目次

CentOS - Nat

SNAT

/etc/sysctl.conf を編集してパケット中継機能を有効にします。

net.ipy4.ip_forwardを1に変更

# Controls IP packet forwarding
net.ipv4.ip_forward = 0
  ↓ 
net.ipv4.ip_forward = 1

すぐ有効にするには

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

下記の状態で、eth1側から192.168.100.0/24からのアクセスだけIPマスカレードする。

eth0グローバル側10.10.10.76
eth1ローカル側192.168.100.76
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A FORWARD -i eth1 -s 192.168.100.0/24 -j ACCEPT 

SNAT IP指定

Global IPが複数ある場合など、ソースIPを指定する事ができる。

内部(192.168.100.0/24)から外部へ出て行く時のソースIPは10.10.10.76
例えば外部Webサイトへアクセスした場合、アクセス元は10.10.10.76になる。

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 10.10.10.76

MASQUERADEターゲット

MASQUERADE ターゲットは、基本的には SNAT ターゲットと同じだ。ただし、 –to-source オプションは必要でない。
なぜかといえば、 MASQUERADE ターゲットは、ダイヤルアップ接続、DHCP など、目的のネットワークへの接続に動的な IPアドレスを使用する接続で機能するようにできているからだ。
固定的な IP 接続なら、代わりに SNAT ターゲットを使用すべきだ。

IP が固定の場合でも、SNAT の代わりに MASQUERADE ターゲットを使うこともできなくはない。
あまりお勧めでないのは、余計なオーバーヘッドがあることと、運用しているうちに矛盾を生じ、
既存のスクリプトを駄目にして “使用不能” にしてしまう可能性があるからだ。

MASQUERADEターゲット について

DNAT

10.10.10.76の80番ポートへのアクセスを、192.168.100.76の80番 へ転送

iptables -t nat -A PREROUTING -p tcp --dst 10.10.10.76 --dport 80 -j DNAT --to-destination 192.168.100.76:80