概要
CentOS 7.x でのNAPT(IPマスカレード)設定の備忘録。
対象読者
- グローバルIPを持たないホストBから、外部へ通信できるホストAを踏み台に疎通を行いたい。
- 例)Webサーバーとのみ疎通可能なDBサーバーで yum install したい時など。
[ホストB] 例) DBサーバー
| eth0 192.168.1.101
|
| eth0 192.168.1.1
[ホストA] 例) Webサーバー
| eth1 x.x.x.x
|
[example.com]
事前の確認
ホストBではping, yum等が失敗するはず。
# ping google.com
失敗
# yum install mariadb-server
失敗
ホストAでは下記の様なデフォルト設定のままであることを確認。
# firewall-cmd --get-active-zones
public
interfaces: eht0 eth1
# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable
設定
ホストAでは firewall-cmd での変更のみ。
// eth0 の firewalld zone を external に変更
# firewall-cmd --zone=external --change-interface=eth0
success
// externalゾーン に IPマスカレード設定
# firewall-cmd --zone=external --add-masquerade --permanent
success
// 変更の反映
# firewall-cmd --reload
success
// 変更後の確認
# firewall-cmd --get-active-zones
external
interfaces: eht0
public
interfaces: eth1
# firewall-cmd --list-all --permanent --zone=external
external
... 略
masquerade: yes
... 略
# firewall-cmd --direct --get-all-rules
ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
ipv4 filter FORWARD 0 -i tun0 -o eth0 -j ACCEPT
ipv4 filter FORWARD 0 -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
ipv4 filter INPUT 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable
ホストBでやることはGateway変更のみ。
// GatewayをホストAのeth0に変更。
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
... 略
GATEWAY=192.168.1.1
... 略
// ネットワーク再起動して変更を反映
# systemctl restart network
// 疎通確認して完了
# ping google.com
成功
# yum install mariadb-server
成功