pfSenseshell:应用configuration修改而不重新启动

我目前正在尝试使用pfSsh.php shell来编辑正在运行的pfSense的configuration。 通过使用pfSsh.phpshell,我可以修改configuration,但一旦写入,它就不会应用于系统。

有没有办法强制configuration重新加载而不重新启动整个系统?

pfSense shell: $newIp['mode'] = 'ipalias'; pfSense shell: $newIp['interface'] = 'wan'; pfSense shell: $newIp['descr'] = 'vip1'; pfSense shell: $newIp['type'] = 'single'; pfSense shell: $newIp['subnet_bits'] = 24; pfSense shell: $newIp['subnet'] = '192.168.0.241'; pfSense shell: $config['virtualip']['vip'][] = $newIp; pfSense shell: parse_config(true); pfSense shell: write_config(); pfSense shell: exec; 

如果我打印configuration,我可以看到添加了贵宾:

  [virtualip] => Array ( [vip] => Array ( [0] => Array ( [mode] => ipalias [interface] => wan [uniqid] => 578aa9852a7bf [descr] => test [type] => single [subnet_bits] => 24 [subnet] => 192.168.0.239 ) [1] => Array ( [mode] => ipalias [interface] => wan [descr] => Unused IP [type] => single [subnet_bits] => 24 [subnet] => 192.168.0.241 

但是在系统上,直到我重新启动,才会添加vip:

 [2.3.1-RELEASE][[email protected]]/root: ifconfig em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM> ether 00:0c:29:22:55:0b inet6 fe80::20c:29ff:fe22:550b%em0 prefixlen 64 scopeid 0x1 inet 192.168.0.240 netmask 0xffffff00 broadcast 192.168.0.255 

编辑:

感谢Chris的回答,我使用了按照预期工作的interface_ipalias_configure方法。 我把一个简单的循环的例子,如果它可以帮助某人,将多个从192.168.0.74到79的vip添加到CARP VIP。

这个php脚本被写入/ etc / phpshellsessions / myscript,并通过“pfSsh.php playback myscript”命令在远程控制台中以admin身份执行。

 $vipPrefix = '192.168.0.'; $vipNetmask = '24'; foreach($config['virtualip']['vip'] as $k => $value) { $tmp[] = $value['subnet']; } end($config['virtualip']['vip']); $vID = key($config['virtualip']['vip']); for ($i = 74; $i < 80; $i++) { $byte = strval($i); if ( ! in_array( $vipPrefix.$byte , $tmp )) { $vID++; $newIp['mode'] = 'ipalias'; $newIp['interface'] = '_vip57cc61f85d2c8'; $newIp['descr'] = $vipPrefix.$byte; $newIp['type'] = 'single'; $newIp['subnet_bits'] = $vipNetmask; $newIp['subnet'] = $vipPrefix.$byte; $newIp['uniqid'] = uniqid(); $config['virtualip']['vip'][$vID] = $newIp; parse_config(true); write_config(); interface_ipalias_configure($config['virtualip']['vip'][$vID]); } } print_r($config['virtualip']['vip']); exec; 

你在做什么只是改变configuration。 这很多是正确的,但是你需要应用这些改变。

对于VIP的情况,请检查在应用更改时firewall_virtual_ip.php执行的操作。 https://github.com/pfsense/pfsense/blob/master/src/usr/local/www/firewall_virtual_ip.php#L48

在执行write_config之后,在代码中执行此操作。