나는 다음과 같은 iptable 규칙을 가지고 /etc/iptables/rule.V6
있으며/etc/iptables/rule.V4
-4 -A INPUT -p icmp -j ACCEPT
-6 -A INPUT -p ipv6-icmp -j ACCEPT
재부팅을 시도하면 netfilter-persistent
내부적으로 iptables-restore
및 ip6tables-restore
.
ip6tables-restore
다음 규칙을 이해할 수 없기 때문에 실패합니다.
-4 -A INPUT -p icmp -j ACCEPT
아래는 오류입니다
root@rs-dal:/etc/iptables# ip6tables-restore rules.q
Error occurred at line: 15
Try `ip6tables-restore -h' or 'ip6tables-restore --help' for more information.
이상적으로는 으로 시작하는 규칙은 -4
무시되지만 ip6tables-restore
Debian Buster에서는 작동하지 않는 것 같습니다.
하지만 iptables-restore
잘 작동하는데, 그게 문제일 뿐입니다 ip6tables-restore
. 이 문제를 어떻게 해결하나요?
답변1
Debian Buster의 기본값이므로 nftables에서 iptables를 실행해야 합니다. 이러한 경우인지 확인하려면 다음을 확인하세요 (nf_tables)
.
# ip6tables-restore --version
ip6tables-restore v1.8.2 (nf_tables)
지금IP6테이블 매뉴얼, 항상 다음과 같은 일이 있었습니다.
-4, --ipv4
이 옵션은 iptables 및 iptables-restore에는 영향을 미치지 않습니다. -4 옵션을 사용하는 규칙이 ip6tables-restore와 함께 삽입되면 자동으로 무시됩니다. 다른 용도로 사용하면 오류가 발생합니다. 이 옵션을 사용하면 단일 규칙 파일의 IPv4 및 IPv6 규칙을 iptables-restore 및 ip6tables-restore와 함께 사용할 수 있습니다.
문제는 당신이 지금 달리고 있다는 것이다.ip6tables-nft-restore
대신에 ip6tables-legacy-restore
.
-4
거기에 언급되지 않은기존 iptable과의 차이점, 이는 아무런 차이가 없어야 함을 의미하지만 실제로는 그렇습니다. 이는 버그처럼 보입니다. 새 버전에서 ip6tables-nft-restore
이를 처리하거나 문서에 이를 허용 가능한 추가 차이점으로 반영해야 합니다.
그런데 다른 방법( -6
with iptables-nft-restore
)은 좋지 않습니다. 무시하는 대신 허용되어 -A INPUT -p ipv6-icmp -j ACCEPT
IPv4 이외의 프로토콜이 생성됩니다 -A INPUT -p icmp -j ACCEPT
(사용자 정의 테스트를 사용하지 않는 한 이는 절대 발생하지 않으며 IP 스택은 어쨌든 이를 무시합니다).
가능한 해결책:
버그 보고서를 제출하고 기존 규칙과 문서를 위반하는 회귀를 주장하십시오. 이것은 다른 사람들에게도 도움이 될 것입니다.
분할 규칙
파일을 두 개의 파일로 분할하되 각 파일에 서로 다른 필터를 적용합니다. 예를 들면 다음과 같습니다.
grep -v -- '^ *-4 ' < before > after.v6 grep -v -- '^ *-6 ' < before > after.v4
단일 규칙을 보존할 수 있도록 거의 동일한 작업을
ip6tables-restore
수행하는 (또한 동일한 작업을 수행하는) 래퍼를 만듭니다./usr/local/sbin/ip6tables-restore
iptables-restore
(일시적으로) nftables 대신 iptables를 포기하고 레거시 iptables로 되돌립니다.
# readlink -f $(which ip6tables-restore) /usr/sbin/xtables-nft-multi # update-alternatives --config ip6tables There are 2 choices for the alternative ip6tables (providing /usr/sbin/ip6tables). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/sbin/ip6tables-nft 20 auto mode 1 /usr/sbin/ip6tables-legacy 10 manual mode 2 /usr/sbin/ip6tables-nft 20 manual mode Press <enter> to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/sbin/ip6tables-legacy to provide /usr/sbin/ip6tables (ip6tables) in manual mode # readlink -f $(which ip6tables-restore) /usr/sbin/xtables-legacy-multi
관련 명령에 대한 링크도 변경되었습니다.
에 대해서도 동일한 작업을 수행합니다
iptables
.nftables에는 현재 규칙이 계속 적용됩니다.
iptables-nft-save
+로 덤프하고ip6tables-nft-save
+로 복원 할 수 있습니다 . 이로 인해 규칙이 두 번 실행됩니다. 한 번은 커널의 iptables 백엔드를 사용하고 한 번은 커널의 nftables 백엔드를 사용하며 NAT는 커널 4.19에서 항상 올바르게 작동하지 않을 수 있습니다(일반적으로 로드된 첫 번째 모듈이 승리합니다. 여기에서 가장 잘 재부팅하거나 방법을 알아두십시오. 규칙을 새로 고치고 관련 (nat) nftables 모듈을 제거합니다.iptables-save
ip6tables-save
nft_nat)
새로운 기능을 수용하고 직접 사용
nft
.다음은 도움이 될 수 있는 몇 가지 명령입니다(그러나 위와 동일한 문제가 있습니다).
iptables-translate
/ip6tables-translate
및iptables-restore-translate
/ip6tables-restore-translate
, 그러나 결과를 재작업해야 하는 경우가 많습니다(특히 다음과 같은 이상한 일치의 경우).u32
). Nftables에는 제품군 유형이 있습니다.inet
실제로 IPv4 및 IPv6 규칙(최신 커널이 필요할 수 있는 nat에서)을 혼합할 수 있으므로 작업이 단순화됩니다.