iptables는 한 국가의 트래픽만 허용합니다.

iptables는 한 국가의 트래픽만 허용합니다.

한 국가의 트래픽만 허용하고 싶습니다.

온라인에서 여러 가지 방법을 보고 읽었지만 대부분은 구식이며(Xtables 애드온 사용) 나머지 절반은 원치 않는 IP를 블랙리스트에 추가하는 방법을 보여줍니다.

그러나 이는 모든 것을 하나씩 블랙리스트에 올리는 잘못된 접근 방식이다. 더 나은 접근 방식은 화이트리스트 외부의 모든 항목이 차단되도록 화이트리스트를 만드는 것입니다.

저는 프랑스에 있습니다. 프랑스 클라이언트/사용자만 서버에 액세스하도록 허용하고 싶습니다.

내 기존 iptables 규칙은 다음과 같습니다.

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination xx.xx.xx.xx:80

트래픽을 전달하면 됩니다.

답변1

이것이 최선의 선택이라고 말하는 것은 아니지만, 다른 실행 가능한 옵션을 찾을 수 없다면 다운로드 가능한 GeoIP 데이터베이스를 사용하여IP 세트도구.

예를 들어 다운로드Geolite2 데이터베이스CSV 형식의 국가입니다. 파일을 다운로드하고 압축을 푼다:

wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip
unzip GeoLite2-Country-CSV.zip
cd GeoLite2-Country-CSV_20190430

프랑스 ID를 찾고 프랑스 네트워크의 모든 기록을 필터링합니다.

grep France GeoLite2-Country-Locations-en.csv
3017382,en,EU,Europe,FR,France,1

awk -F, '$2 == 3017382 {print $1}' > french_networks.txt

다음과 같은 프랑스 네트워크를 포함하는 IPset을 구축합니다 france.

ipset create france hash:net
while read network ; do 
    ipset add france $network; 
done < french_networks.txt

iptablesipset을 사용하여 프랑스어가 아닌 콘텐츠를 제거하는 규칙을 만듭니다 . 로컬 네트워크가 삭제되지 않도록 추가 규칙을 추가해야 할 수도 있습니다.

iptables -A INPUT -m set ! --match-set france src -j DROP

답변2

다음 페이지에서 iptables를 사용하여 프랑스 IP를 쉽게 얻을 수 있습니다.

https://www.ip2location.com/free/visitor-blocker

해당 페이지에서 "France"를 선택한 다음 출력 형식으로 "Linux iptables Accept"를 선택하십시오.

답변3

csf를 사용해 볼 수 있습니다. 설치가 쉽고 csfpost.sh에서 iptables 규칙을 설정할 수 있습니다. csf.conf에서 FR에 대해 CC_ALLOW_FILTER를 설정합니다. 네트워킹 문서와 권장 사항을 확인하세요. 자신이 잠겨 있는 경우를 대비해 서버의 콘솔에 액세스하는 것이 좋습니다. 하하.

관련 정보