На одном из моих серверов я вижу это:
ACCEPT tcp -- distinct_server_ip anywhere tcp dpt:mysql
При выполнении
sudo iptables -L | grep distinct_server_ip
И с
iptables -L -n -v | grep 3306
432K 26M ACCEPT tcp -- * * mydistinctip 0.0.0.0/0 tcp dpt:3306
90 5400 ACCEPT tcp -- * * mydistinctip2 0.0.0.0/0 tcp dpt:3306
Я хотел бы включить то же самое на другом сервере, не могли бы вы помочь мне с командой, которую я должен использовать?
Я думал о чем-то вроде:
iptables -A INPUT -p tcp -s distinct_server_ip --sport 1024:65535 -d this_server_ip --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables
сильно зависит от порядка ваших правил. Ваш вопрос не совсем ясен, поэтому я рассмотрю обе ваши возможности.
На ServerA
, если вы хотите разрешить ServerB
чтобы подключиться к нему:
iptables -A INPUT -p tcp -s ServerB --dport 3306 -j ACCEPT
И для правил выхода на ServerB
(не рекомендуется), если вы хотите разрешить ему подключаться к ServerA
:
iptables -A OUTPUT -p tcp -d ServerA --dport 3306 -j ACCEPT
Большое предостережение: у вас может быть что-то в INPUT
или OUTPUT
цепочка, которая может предотвратить обработку этих правил. Чтобы сообщить об этом, нам необходимо просмотреть все ваши правила.
Вы не можете сделать это просто, потому что iptables
принимает только один IP-адрес в своих правилах (то же самое не относится к портам, они могут быть несколько сгенерированы mport
модуль, который загружается iptables
по необходимости автоматически).
Есть вероятность, что вы просто продублируете свои правила. Это не всегда практично, хотя и очень просто.
Или вы могли бы эмулировать поведение multi-ip, создав новую таблицу для фильтрации вашего заданного списка ip-адресов. Например:
Chain MY_WISHLIST (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 1.2.3.4/19 0.0.0.0/0
0 0 ACCEPT all -- * * 1.2.0.0/17 0.0.0.0/0
0 0 ACCEPT all -- * * 1.3.0.0/16 0.0.0.0/0
0 0 ACCEPT all -- * * 1.4.128.0/20 0.0.0.0/0
0 0 ACCEPT all -- * * 1.5.152.0/21 0.0.0.0/0
0 0 ACCEPT all -- * * 1.6.0.0/15 0.0.0.0/0
... и вы можете ссылаться на эту цепочку откуда угодно:
0 0 MY_WISHLIST tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 2,3,5,7,11,13,17,19
Наконец, есть новая разработка, связанная с ядром linux / сетевыми функциями, и это ipset
. Ipset обрабатывает именно этот фактический недостаток (?) Iptables, это будет четвертый инструмент командной строки межсетевого экрана для Linux (после ipfwadm, ipchains и наших текущих iptables).