IPTables - перенаправить трафик в зависимости от страны

723
Dakado

Есть ли способ, как разрешить TCP-трафик только из указанных стран на указанный порт, а остальная часть трафика перенаправить на другой IP / порт с помощью iptables?

3

2 ответа на вопрос

3
cybernard

You will need to set up and update the geoip database before it works.

iptables -I INPUT -m geoip -p tcp --dport ### --src-cc CN -j ACCEPT iptables -A PREROUTING -p tcp --dport ### --src-cc ! CN -j DNAT --to-destination 1.1.1.1:333 

replace 1.1.1.1 with your IP and 333 with whatever port you want.

Here is a tutorial to help you out: http://xmodulo.com/block-network-traffic-by-country-linux.html

You will need to periodically update the databases as sometimes ip addresses change owners and countries.

Но не приведет ли это к огромному замедлению? В конце концов, он будет вызываться для каждого пакета. Daniel B 7 лет назад 0
@DanielB Если ваши правила выполнены правильно и в правильном порядке, влияние на производительность будет минимальным. Тем не менее, пользователь хочет сделать это, и он должен будет решить, стоит ли загрузка ЦП. У меня есть перенаправление для моего веб-сервера, и влияние незначительно. Предполагается, что это правило находится наверху цепочки INPUT: ** iptables -A INPUT -m conntrack -j ACCEPT --ctstate RELATED, ESTABLISHED Это передает все, кроме новых и поддельных пакетов. ** cybernard 7 лет назад 0
Кажется, он не работает: iptables v1.4.14: неизвестная опция "--dport" Попробуйте `iptables -h 'или' iptables --help 'для получения дополнительной информации. Dakado 7 лет назад 0
попробуйте добавить ** - m tcp -p tcp ** cybernard 7 лет назад 0
Если вам нужно сделать несколько портов, добавьте ** - m multiport ** и измените ** - dport ** на ** - dports ** cybernard 7 лет назад 0
Мне не нужно добавлять несколько портов, но ваш синтаксис не просто работает. Dakado 7 лет назад 0
0
Dakado

The correct syntax is:

iptables -I INPUT -m geoip -p tcp --dport xxx --src-cc CN -j ACCEPT iptables -A PREROUTING -p tcp --dport xxx --src-cc ! CZ,SK -j DNAT --to-destination 1.1.1.1:333 

But your answer was correct.

так близко, я думаю, ** - m tcp ** должно быть одним из условий для мультипорта. Я обновил свой ответ, чтобы отразить это изменение. cybernard 7 лет назад 0
Хорошо, я пометил ваш ответ как правильный Dakado 7 лет назад 0

Похожие вопросы