eth0 10.0.0.1/255.255.255.0(外側)
eth1 192.168.128.254/255.255.255.0(内側)
の場合。
RHEL6系の初期状態
# iptables -nL
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination
# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 0 ↓ net.ipv4.ip_forward = 1
設定を有効化
# sysctl -p
ルールを追加
1.まず内側からeth0に対するマスカレードを定義する。
# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.128.0/24 -j MASQUERADE
2.次に内側eth1から外側eth0に対するフォワーディングを許可する。
# iptables -I FORWARD 1 -i eth1 -o eth0 -s 192.168.128.0/24 -j ACCEPT
3.最後に確立済みの接続に対する、フォワーディングを許可する(外側からの戻りパケット)
# iptables -I FORWARD 1 -m state --state ESTABLISHED,RELATED -j ACCEPT
2,3については、RHEL6系がデフォルトで全てのフォワーディングをREJECTするため必要となるルール。
Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
設定後の状態
# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 287 22364 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 3 417 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT all -- eth1 eth0 192.168.128.0/24 0.0.0.0/0 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 7 packets, 1260 bytes) pkts bytes target prot opt in out source destination
# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 2 packets, 278 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * eth0 192.168.128.0/24 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
これで他の内側ホストのゲートウェイを192.168.128.254に設定して通信できるかテストする。
上手く行ったなら設定を保存しておく。
# /etc/init.d/iptables save
0 件のコメント:
コメントを投稿