Centos系でのMASQUERADE構築
Centos7
●マスカレードホストルータ
- firewallコマンドにてMASQUERADE設定
# firewall-cmd --direct --get-all-rules firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -s 10.0.0.0/8 -j MASQUERADE firewall-cmd --direct --add-rule ipv4 filter POSTROUTING 0 -t nat -s [src_server_gip] -j MASQUERADE firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o ens160 -j ACCEPT firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens192 -m state --state RELATED,ESTABLISHED -j ACCEPT
※ens160:GIP,ens192:LIP
※ルール削除する場合、sed -i -e "s/--add-rule --remove-rule/"
- フォワード許可設定
# vim /etc/sysctl.conf net.ipv4.ip_forward=1
- 設定確認
# sysctl -p net.ipv4.ip_forward=1
●適用&確認
# systemctl unmask firewalld # systemctl enable firewalld # systemctl start firewalld # systemctl status firewalld
●一時的設定と恒久的設定について
設定のコマンドを説明する前に一時的設定と恒久的設定について説明していきます。
一時的設定(–permanentオプション無し)
「firewall-cmd」コマンドで設定を行う際に、「–permanent」オプションを指定しなければその設定は一時的な設定となり、サーバや>「firewalld」のサービスを再起動すると設定が消えてしまいます。
恒久的設定(–permanentオプションあり)
サーバの再起動や「firewalld」サービスの再起動で設定が消えてしまわないようにするためには、「–permanent」オプションを使用して設> 定を行う必要があります。
その際、「–permanent」オプションを指定して設定を行った場合は、そのままでは「firewalld」に設定が反映されないため「fiewall-cmd –reload」で設定を反映させる必要があります。
●子クライアント
- デフォルトゲートウェイをMASQUERADEするサーバへ向ける
# route add default gw [MASQUERADE_server_ip] ※削除する場合 route del default gw [MASQUERADE_server_ip]
- ルーティングの永続化
- /etc/sysconfig/network-scripts/route-[インタフェース名]
- これに下記のようなルーティング情報を記載
- xxx.xxx.xxx.0/24 via [ゲートウェイのIP] [インタフェース名(例:eth0)]
# cat /etc/sysconfig/network-scripts/route-eth0 [dst_server_gip]/32 via [MASQUERADE_server_ip] eth0
- 特定Dstの場合、ルーティング追加にて個別設定可能
# route add -net [dst_server_gip] netmask 255.255.255.255 gw [MASQUERADE_server_ip] eth0
- 確認
# ip route show
Centos6
●マスカレードホストルータ
- iptablesコマンドにてMASQUERADE設定
# iptables -t nat -I PREROUTING -i eth0 -s 172.31.0.0/16 -p tcp --dport 80 -j DNAT --to-destination [MASQUERADE_server_ip:port]
※上記で正常に動作しない場合、下記書き方も検討
# iptables -t nat -A PREROUTING -i eth0 -s ! [src_server_ip] -p tcp --dport 80 -j DNAT --to [MASQUERADE_server_ip:port] # iptables -t nat -A POSTROUTING -o eth0 -s 172.31.0.0/16 -d [MASQUERADE_server_ip] -j SNAT --to [src_server_ip] # iptables -A FORWARD -s 172.31.0.0/16 -d [MASQUERADE_server_ip] -i eth0 -o eth0 -p tcp --dport [MASQUERADE_server_port] -j ACCEPT
参考