/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
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 ターゲットは、基本的には SNAT ターゲットと同じだ。ただし、 –to-source オプションは必要でない。
なぜかといえば、 MASQUERADE ターゲットは、ダイヤルアップ接続、DHCP など、目的のネットワークへの接続に動的な IPアドレスを使用する接続で機能するようにできているからだ。
固定的な IP 接続なら、代わりに SNAT ターゲットを使用すべきだ。
IP が固定の場合でも、SNAT の代わりに MASQUERADE ターゲットを使うこともできなくはない。
あまりお勧めでないのは、余計なオーバーヘッドがあることと、運用しているうちに矛盾を生じ、
既存のスクリプトを駄目にして “使用不能” にしてしまう可能性があるからだ。
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