예를 들어 다음과 같은 규칙이 있습니다.
#iptables -A OUTPUT -d www.google.com -j ACCEPT
터미널에 이 규칙을 입력하면 적절한 IP로 확인되며 rules.v4
저장 시 해당 IP가 저장됩니다. www.google.com
IP 대신 자동 로드된 파일에 저장하는 방법이 있나요 ? 파일을 직접 편집하려고 시도했지만 이름을 입력하면 규칙이 로드되지 않습니다.
답변1
아니요, 커널은 이름에 대해 아무것도 모릅니다. 커널 규칙에는 IP 주소만 있습니다. 이러한 규칙은 커널 내용을 가역적으로 정확하게 표현하는 텍스트 형식을 사용하여 저장 및 복원되므로 이름도 포함되지 iptables-save
않습니다 .iptables-restore
원하는 것에 가장 가까운 방법은 수동으로 유지 관리하고 이름을 포함할 수 있는 규칙을 설정하기 iptables
위한 일련의 명령을 포함하는 쉘 스크립트 형식으로 규칙을 저장하는 것입니다 . ip6tables
하지만 왜 그렇게 하면 안 되는지 알아보려면 계속 읽어보세요.
애초에 왜 이름을 사용해야 하는지 잘 생각해 보아야 합니다. 이름이 어떤 IP 주소를 가리킬지 미리 모르기 때문에 이름을 사용하고 계시나요, 아니면 이름이 매핑되는 IP 주소가 수시로 변경될 수 있기 때문에 사용하고 계시나요? 이름을 사용하면 iptables
또는 ip6tables
명령이 즉시 이름을 확인하고 커널에 무기한으로 존재하는 것은 IP 주소입니다. 이름과 IP 주소 간의 매핑이 변경되면 어떻게 되나요? DNS 이름에는 이름과 주소 간의 매핑을 캐시해야 하는 기간을 나타내는 TTL이 있습니다. 그러나 매핑이 변경되면 커널의 iptables 규칙이 업데이트되지 않아 오래되거나 오래된 IP 주소가 포함된 규칙이 생성됩니다.