nftables 방화벽을 통한 정적 경로

nftables 방화벽을 통한 정적 경로

2개의 NIC가 있는 게이트웨이 "X"가 있습니다.

192.168.0.0/24에 연결된 enp0s3(192.168.0.100)(WAN 네트워크라고 가정)

172.16.0.0/24(아마도 LAN 네트워크)에 연결된 enp0s8(172.16.0.1)

LAN(172.16.0.0/24)의 호스트가 게이트웨이 "X"를 통해 인터넷을 검색할 수 있도록 nftables를 사용하여 NAT 연결을 만들었습니다.

/etc/nftables/nftables_firewall

flush ruleset
table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;
    ct state {established, related} accept
    ct state invalid drop
    iifname lo accept
    iifname enp0s8 accept
    ip protocol icmp accept
    reject
  }

  chain forward {
    type filter hook forward priority 0;
    oifname enp0s3 accept
    iifname enp0s3 ct state related, established accept
    iifname enp0s3 drop
  }

  chain output {
    type filter hook output priority 0;
  }

}

/etc/nftables/nftables_nat

flush ruleset
table ip nat {
  chain prerouting {
    type nat hook prerouting priority 0;
  }

  chain postrouting {
    type nat hook postrouting priority 0;
    oifname enp0s3 masquerade
  }
}

이제 게이트웨이 "X"를 통해 LAN(172.16.0.0/24 네트워크)의 호스트에 액세스하려면 WAN(192.168.0.0/24 네트워크)의 랩톱인 호스트(192.168.0.101)가 필요합니다. 즉, WAN의 이 호스트(192.168.0.101)에서 LAN(172.16.0.0/24 네트워크)으로의 고정 경로를 구성해야 합니다.

이것은 wlo1 인터페이스를 통해 192.168.0.0/24 네트워크에 있는 랩탑에 추가하려는 정적 경로입니다.

ip route add 172.16.0.0/24 via 192.168.0.100 dev wlo1

게이트웨이 방화벽의 규칙은 이러한 패킷이 172.16.0.0/24 네트워크에 진입하는 것을 차단하고 있습니다.

내 게이트웨이에서 이를 어떻게 허용합니까?

방화벽 규칙에 따라 패킷이 삭제된다는 것을 알고 있습니다.

테스트

ping 172.16.0.2 

실행 중 192.168.0.101에서

tcpdump -lnni any src 192.168.0.101

게이트웨이에서 "X"가 응답합니다.

11:41:53.240815 IP 192.168.0.101 > 172.16.0.2: ICMP echo request, id 8, seq 1, length 64
11:41:54.243947 IP 192.168.0.101 > 172.16.0.2: ICMP echo request, id 8, seq 2, length 64
11:41:58.247687 ARP, Request who-has 192.168.0.100 tell 192.168.0.101, length 46

답변1

당신의규칙 세트에는 결함이 있습니다.

flush ruleset

둘 다 순차적으로 실행되면 flush ruleset마지막 것만 남게 됩니다.

각각은 flush ruleset다음과 같이 변경되어야 합니다.

table inet filter
delete table inet filter

그리고:

table ip nat
delete table ip nat

처음 사용할 때 실패하지도 않고 자체 복제하지도 않고 테이블에 영향을 주지도 않는 멱등성 테이블 정의를 매번 얻으려면다른테이블.


이제 질문에 대해 올바른 위치에 이를 허용하는 전달 규칙을 삽입하는 것만 큼 간단합니다. 삭제 규칙 앞에 다음 중 하나를 수행합니다.

# nft insert rule inet filter forward index 2 ip saddr 192.168.0.101 ip daddr 172.16.0.0/24 accept

그렇지 않으면:

# nft add rule inet filter forward index 1 ip saddr 192.168.0.101 ip daddr 172.16.0.0/24 accept

테스트하다,

또는 이를 유지하기 위해 올바른 위치에서 규칙 세트를 직접 편집하여:

...
iifname enp0s3 ct state related, established accept
ip saddr 192.168.0.101 ip daddr 172.16.0.0/24 accept
iifname enp0s3 drop
...

추가 안전을 위해 선택적으로 규칙에 iifname enp0s3(=> )를 추가할 수 있습니다.iifname enp0s3 ip saddr 192.168.0.101 ip daddr 172.16.0.0/24 accept

반환 트래픽은 이미 상태 저장 규칙( ... ct state related, established ...)에 의해 처리되었습니다.

관련 정보