CentOS7になり、ネットワークまわりの設定がかなり変わりましたね。地味に困りますねえ。。。設定の都度ググっては忘れてを繰り返しているので、備忘録としてまとめておきます。
以下のサイトを参考にしていますので、詳しくはこちらを見たほうが良いと思います。。。
firewalldの設定方法(基本設定編) | server-memo.net
CnetOS7で出てきたfirewalldではzoneという概念が出てきます。zone毎に通信制御のポリシーを設定して、そのzone(ポリシー集)をNICに紐付けることになります。
現在の設定状態を確認するのは、以下のコマンド。
$ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:
「public」というzoneが、eth0のNICに紐付いていて、「dhcpv6-client」と「ssh」というサービスが許可されています。
デフォルトで用意されているzone情報は以下で確認。「dmz」とか「home」とか名前のzoneが定義されています。
$ sudo firewall-cmd --list-all-zones
事前に登録されているサービス情報は、以下にxmlファイルで定義されています。
$ ls /usr/lib/firewalld/services/ RH-Satellite-6.xml dropbox-lansync.xml ipsec.xml ms-wbt.xml privoxy.xml smtps.xml tor-socks.xml amanda-client.xml freeipa-ldap.xml iscsi-target.xml mysql.xml proxy-dhcp.xml snmp.xml transmission-client.xml amanda-k5-client.xml freeipa-ldaps.xml kadmin.xml nfs.xml ptp.xml snmptrap.xml vdsm.xml bacula-client.xml freeipa-replication.xml kerberos.xml ntp.xml pulseaudio.xml squid.xml vnc-server.xml bacula.xml ftp.xml kpasswd.xml openvpn.xml puppetmaster.xml ssh.xml wbem-https.xml ceph-mon.xml high-availability.xml ldap.xml pmcd.xml radius.xml synergy.xml xmpp-bosh.xml ceph.xml http.xml ldaps.xml pmproxy.xml rpc-bind.xml syslog-tls.xml xmpp-client.xml dhcp.xml https.xml libvirt-tls.xml pmwebapi.xml rsyncd.xml syslog.xml xmpp-local.xml dhcpv6-client.xml imap.xml libvirt.xml pmwebapis.xml samba-client.xml telnet.xml xmpp-server.xml dhcpv6.xml imaps.xml mdns.xml pop3.xml samba.xml tftp-client.xml dns.xml ipp-client.xml mosh.xml pop3s.xml sane.xml tftp.xml docker-registry.xml ipp.xml mountd.xml postgresql.xml smtp.xml tinc.xml
詳細はファイルの中身見れば分かります。
$ cat /usr/lib/firewalld/services/dhcpv6-client.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>DHCPv6 Client</short> <description>This option allows a DHCP for IPv6 (DHCPv6) client to obtain addresses and other IPv6 settings from DHCPv6 server.</description> <port protocol="udp" port="546"/> <destination ipv6="fe80::/64"/> </service>
許可するサービスやポートの設定を変更するにあたり、一時的設定と恒久的設定があります。恒久的設定にしておかないと、firewalldサービスの再起動の都度、リセットされてしまいます。
設定するためのコマンドは以下です。サービスを登録する方法です。「--permanet」オプションをつけると、恒久的設定になります。
$ sudo firewall-cmd --permanent --zone=public --add-service=telnet success
ポートを登録する方法。
$ sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp success
恒久的な設定を与えた場合、以下のリロードコマンドを実行しないと、設定が反映されません。なお、このリロード処理では、セッションは切れず、動的に更新してくれます。
$ sudo firewall-cmd --reload
あとは迷ったら、「firewall-cmd --help」で確認すること。
初めて触る人にしてみれば、iptablesよりfirewalldの方が分かり易いんじゃないかなと思います。