Ubuntu 22.04 iptables 명령이 작동하지 않습니다

Ubuntu 22.04 iptables 명령이 작동하지 않습니다

netfilter를 처음 접하고 현재 세 개의 인터페이스 eth0/eth1/eth2를 사용하는 응용 프로그램을 실행 중입니다. 내 응용 프로그램은 두 개의 서버에서 실행될 것입니다. 두 서버 모두 자체 인터페이스(eth0/eth1/eth2)를 통해 액세스하여 서로 통신할 수 있습니다.

우분투 18.04(커널 버전 4.*)에서는 iptables 명령을 사용하여 이들 간의 통신을 중단합니다.

22.04(커널 버전 6.2.*)에서는 동일한 iptable 명령을 사용하여 두 서버 간의 통신을 중단했지만 예상대로 작동하지 않았습니다(내 애플리케이션 코드는 동일하게 유지되었습니다). - 내 애플리케이션에는 존재를 보고하는 메커니즘이 있습니다. 연결 가능한 이웃 서버 수 - 22.04에 적용된 iptables 규칙을 사용하면 여전히 다른 서버에 연결할 수 있는 것으로 보고됩니다(18.04에서는 그렇지 않았습니다).

두 커널 버전 사이에서 네트워크 트래픽이 필터링되는 방식에 많은 변화가 있는 것을 볼 수 있습니다(최신 버전에는 더 많은 도구가 있습니다).

nftables와의 충돌을 피하기 위해 ufw를 제거했습니다. 한 가지 관찰은 규칙을 적용했을 때 내 응용 프로그램이 이웃 서버에 연결할 수 없다고 잠시 보고한 다음 갑자기 액세스할 수 있게 되어 규칙을 재정의했다는 것입니다. 확실하지 않습니다.

이제 내가 놓친 부분을 확인하기 위해 여기에 도움을 요청하세요...

-A INPUT -s x.x.x.x/32 -d y.y.y.y/32 -i eth2 -j DROP
-A INPUT -s x.x.x.y/32 -d y.y.y.x/32 -i eth1 -j DROP
-A INPUT -s x.x.y.y/32 -d y.y.x.x/32 -i eth0 -j DROP

-A OUTPUT -s y.y.y.y/32 -d x.x.x.x/32 -o eth2 -j DROP
-A OUTPUT -s y.y.y.x/32 -d x.x.x.y/32 -o eth1 -j DROP
-A OUTPUT -s y.y.x.x/32 -d x.x.y.y/32 -o eth0 -j DROP

참고: 모든 규칙은 체인에 배치되어 다른 규칙보다 우선합니다.

Chain INPUT (policy DROP)
target     prot opt source               destination
DROP       all  --  xxxx  yyyy
DROP       all  --  zzzz  AAAA
DROP       all  --  BBBB  CCCC

답변1

Ubuntu 22.04에서 nftables기본적으로 사용됩니다 .

Ubuntu 22.04 LTS의 새로운 보안 기능은 무엇입니까?

nftables를 기본 방화벽 백엔드로 사용

Linux의 방화벽은 Linux 커널의 방화벽 메커니즘과 사용자 공간에서 방화벽을 구성하는 데 사용되는 도구라는 두 가지 구성 요소로 구성됩니다. Linux 커널은 전통적으로 iptables/xtables와 최신 nftables라는 두 가지 서로 다른 방화벽 정책 하위 시스템을 지원해 왔습니다. nftables는 특히 듀얼 스택 IPv4/IPv6 시스템의 경우 방화벽 규칙을 생성하고 배포할 때 성능과 유연성 면에서 상당한 이점을 제공합니다. 기존 iptables 사용자 공간 관리 도구는 이제 nftables 커널 백엔드를 구성하는 한편, 기존 iptables 패러다임에서 지원되지 않는 보다 유연한 규칙을 생성할 수 있도록 새로운 nft 사용자 공간 도구도 제공됩니다.

iptables규칙을 및 를 nft통해 변환 할 수 있습니다 . 예를 들어:iptables-translateipt6ables-translate

iptables-translate -A INPUT -s x.x.x.x/32 -d y.y.y.y/32 -i eth2 -j DROP

자세한 내용은 맨페이지를 참조하세요.

iptables로 되돌립니다.

우선순위를 보고 변경하려면 다음 명령을 사용하십시오.

update-alternatives --config iptables 

예제 출력:

  Selection    Path                       Priority   Status
------------------------------------------------------------
* 0            /usr/sbin/iptables-nft      20        auto mode
  1            /usr/sbin/iptables-legacy   10        manual mode

가장 높은 우선순위를 다음으로 설정 iptables:

sudo update-alternatives --install /usr/bin/iptables iptables /usr/sbin/iptables-nft 30

기본값으로 설정:

sudo update-alternatives  --set iptables /usr/sbin/iptables-legacy

UFW 및 nft를 비활성화합니다.

sudo systemctl disable --now ufw 
sudo systemctl disable --now nftables
sudo apt install iptables-persistent
sudo systemctl enable --now iptables

관련 정보