我正在尝试让 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
从上面我预计它会接受/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)
我可以手动启用我的配置文件,ipf -Fa -f /etc/ipf/ipf.conf
并且工作正常,因此它只是我无法按预期工作的 SMF 内容。
我一直在尝试阅读并查看 SMF 针对 IPFilter 执行的脚本。但我被困住了。它比我能理解的要复杂得多。
也许这与 Solaris 的自动网络配置功能有关?
如果相当复杂的 SMF 脚本能够将其所做的选择的一些输出输出到控制台(从而输出到 SMF 日志文件),那就太好了。不幸的是事实并非如此。
我的主机是一个具有独占 IP 堆栈的非全局区域。
我忽略了什么?
答案1
我成功了!
事实证明,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"
……这似乎让一切变得不同。
答案2
可以使用:
$ svccfg -s ipfilter:default setprop \
config/ipf_config_file = astring: "/etc/ipf/ipf.conf"