Solaris의 bsd 패킷 필터, ping이 허용되지 않는 이유는 무엇입니까?

Solaris의 bsd 패킷 필터, ping이 허용되지 않는 이유는 무엇입니까?

두 개의 인터페이스가 있습니다. 하나는 IP 192.168.0.30의 net0이고 다른 하나는 IP 10.2.0.1의 vnic0입니다.

이것은 내 pf.conf이고, 솔라리스는 11.4입니다.

ext_if="net0"
int_if="vnic0"
localnet="192.168.0.0/24"
internalnet="10.2.0.0/24"

int_tcp_services = "{www, https}"
int_udp_services = "{domain}"

set skip on lo
set loginterface $ext_if

block return in log all
block out all

antispoof quick for $ext_if

# Block 'rapid-fire brute force attempts
table <bruteforce> persist
block quick from <bruteforce>

#enable icmp for localnet
pass inet proto icmp from $localnet to any keep state
pass inet proto icmp from $internalnet to any keep state
pass inet proto icmp from any to $ext_if keep state
pass inet proto icmp from any to $int_if keep state

# SSH is listening on port 22
pass in quick proto tcp to $ext_if port 22 keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global)

# bind is listening on port 53
pass in quick proto tcp to $int_if port 53 keep state
pass in quick proto udp to $int_if port 53 keep state

# Allow essential outgoing traffic
pass out quick on $ext_if proto tcp to any port $int_tcp_services
pass out quick on $ext_if proto udp to any port $int_udp_services

방화벽이 비활성화된 모든 인터페이스는 핑을 허용합니다. net0은 방화벽이 활성화된 경우에만 핑을 허용합니다.

해결책이 있나요?

답변1

규칙 세트에 오타가 있는 것 같습니다. s/set Skip on lo/set Skip on lo0을 수행하고 싶습니다. 이렇게 하면 로컬 핑으로 인한 방화벽의 잘못된 동작이 수정됩니다. NIC에 바인딩된 주소를 검색하더라도 모든 로컬 트래픽은 lo0에 바인딩됩니다. 스푸핑 방지 기능은 이러한 핑에 대해 작동합니다.

답변2

이 기본이지만 작동하는 .conf를 사용하여 솔루션을 찾았습니다.여기편집하고

# Vars
ext_if="net0"
int_if="vnic0"
webports="{443, 80}"

##  make IP reassembly work
set reassemble yes no-df

## ignore loopback traffic
set skip on lo0

# block everything unless told otherwise
# and send TCP-RST/ICMP unreachable
# for every packet which gets blocked
block return in log all
pass out all

# accept incoming SSH connections
pass in proto tcp to $ext_if port 22

# accept webeservers connections
pass in proto tcp to $ext_if port $webports

# accept icmp
pass in proto icmp all

## allow incoming messages from DHCP
pass in inet proto udp from port 67 to port 68
pass in inet6 proto udp from port 547 to port 546

## packet too big - needed for PMTUD
pass in inet6 proto ipv6-icmp icmp6-type 2

## router advertisement
pass in inet6 proto ipv6-icmp icmp6-type 134

## neighbor solicitation
pass in inet6 proto ipv6-icmp icmp6-type 135

## neighbor advertisement
pass in inet6 proto ipv6-icmp icmp6-type 136

## allow all connections initiated from this system,
## including DHCP requests
pass out

관련 정보