:>/dev/null

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

Centos7でFirewalldを用いたポートフォワード設定

CentOS 7で採用されたFirewallでのポートフォワード設定を構築したのでメモしておく。
firewall-cmd –directよりfirewall-cmd –add-rich-ruleの方が個人的には分かりやすく感じたのでこちらで。

  • 以下構築要件
    • 内部ネットワークは全許可
    • 80番ポートにアクセスしてきたらsquidの3128番ポートへポートフォワード
firewall-cmd --add-masquerade
firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.0.0.0/8" accept"
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" forward-port port="80" protocol="tcp" to-port="3128"'
※firewall-cmd --directの場合、[firewall-cmd --direct --add-forward-port=port=80:proto=tcp:toport=3128]

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160 ens192
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 
        rule family="ipv4" source address="10.0.0.0/8" accept
        rule family="ipv4" source address="10.0.0.0/8" forward-port port="80" protocol="tcp" to-port="3128"

これは”–permanent“が無いので一時的な設定になります。
firewall-cmd –reloadを実行すれば解除できます。
ルールを削除する場合、sed -i -e "s/--add-forward-port --remove-forward-port/"

参考

透過型proxyの構築まで~その2~ - いつまでも高みを目指して

Firewalldで特定のポートに特定のネットワークから許可 ← RootLinks Co., Ltd.