Solaris 11.1 和 ipfilter

pet*_*erh 5 solaris smf

我正在尝试让 IP 过滤器在 Solaris 11.1 上工作。

我正在关注官方的Solaris 11.1 指南

当主机启动时,它没有选择ipf.conf我期望的。以下是内容 svccfg -s ipfilter:default listprop

config                                        application
config/ipf6_config_file                      astring     /etc/ipf/ipf6.conf
config/ipnat_config_file                     astring     /etc/ipf/ipnat.conf
config/ippool_config_file                    astring     /etc/ipf/ippool.conf
firewall_config_default                       com.sun,fw_configuration
firewall_config_default/apply_to             astring
firewall_config_default/exceptions           astring
firewall_config_default/open_ports           astring
firewall_config_default/value_authorization  astring     solaris.smf.value.firewall.config
firewall_config_default/version              count       1
firewall_config_default/policy               astring     custom
firewall_config_default/custom_policy_file   astring     /etc/ipf/ipf.conf
firewall_config_override                      com.sun,fw_configuration
firewall_config_override/apply_to            astring
firewall_config_override/policy              astring     none
firewall_config_override/value_authorization astring     solaris.smf.value.firewall.config
general                                       framework
general/complete                             astring
general/enabled                              boolean     true
restarter                                     framework                 NONPERSISTENT
restarter/logfile                            astring     /var/svc/log/network-ipfilter:default.log
restarter/contract                           count       7951
restarter/start_pid                          count       4031
restarter/start_method_timestamp             time        1354809979.642008000
restarter/start_method_waitstatus            integer     0
restarter/auxiliary_state                    astring     dependencies_satisfied
restarter/next_state                         astring     none
restarter/state                              astring     online
restarter/state_timestamp                    time        1354809979.645753000
Run Code Online (Sandbox Code Playgroud)

从上面我期待它会拿起/etc/ipf/ipf.conf并使用它。它没有!相反,它使用一个空的规则集。

启动后我有:

$ svcs network/ipfilter
STATE          STIME    FMRI
online         17:06:19 svc:/network/ipfilter:default
$ ipfstat -io
empty list for ipfilter(out)
empty list for ipfilter(in)
Run Code Online (Sandbox Code Playgroud)

我可以手动启用我的配置文件,ipf -Fa -f /etc/ipf/ipf.conf并且工作正常,所以它只是 SMF 的东西,我无法按预期工作。

我一直在尝试阅读并查看 SMF 针对 IPFilter 执行的脚本。但我被困住了。它比我能理解的要复杂得多。

也许它与 Solaris 的自动网络配置功能有关?

如果相当复杂的 SMF 脚本将一些关于它所做选择的输出输出到控制台(从而输出到 SMF 日志文件),那就太好了。不幸的是它没有。

我的主机是具有独占 IP 堆栈的非全局区域。

我忽略了什么?

pet*_*erh 4

我成功了!

事实证明,Solaris 11.1 的官方 Solaris 文档中存在错误。

它告诉你要做的事情:

$ svccfg -s ipfilter:default setpropfirewall_config_default/policy = astring:"自定义"
$ svccfg -s ipfilter:default setpropfirewall_config_default/custom_policy_file = astring:"/etc/ipf/myorg.ipf.conf"

但如果你仔细观察,你会发现该语句中有一个错误:“atring:”和实际值之间没有空格!

svccfg不会抱怨这个。小心 !

简而言之,我最初所做的是这样的(我的配置文件/etc/ipf/ipf.conf对我来说似乎是最自然的):

$ svccfg -s ipfilter:default setpropfirewall_config_default/policy = astring:"自定义"
$ svccfg -s ipfilter:default setpropfirewall_config_default/custom_policy_file = astring:"/etc/ipf/ipf.conf"

然后我意识到缺少一个空格,所以我这样做了:

$ svccfg -s ipfilter:default setpropfirewall_config_default/policy = "custom"
$ svccfg -s ipfilter:default setpropfirewall_config_default/custom_policy_file = "/etc/ipf/ipf.conf"

然后我发布了我的问题。svccfg -s ipfilter:default listprop正如您所看到的,即使在当时,输出看起来也很正确。但它没有奏效。无法解释为什么。

我终于做到了:

$ svccfg -s ipfilter:default setpropfirewall_config_default/policy = astring:“自定义”
$ svccfg -s ipfilter:default setpropfirewall_config_default/custom_policy_file = astring: "/etc/ipf/ipf.conf"

……这似乎让一切变得不同。