:>/dev/null

ラガードエンジニアの不撓不屈の精神

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」で設定を反映させる必要があります。

●子クライアント

# route add default gw [MASQUERADE_server_ip]
※削除する場合 route del default gw [MASQUERADE_server_ip]
  • ルーティングの永続化
    • /etc/sysconfig/network-scripts/route-[インタフェース名]
    • これに下記のようなルーティング情報を記載
# 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

参考

firewalldの設定方法(基本設定編) | server-memo.net