Назад | Перейти на главную страницу

правило iptables между сетями не работает

У меня есть сценарий, в котором маршрутизатор соединяет 2 сети, поэтому у меня есть эти машины с этими интерфейсами: Виртуальная машина 1, которая работает как маршрутизатор:

eth1: 193.136.200.254 
eth2: 192.168.10.254 
eth3: 24.200.220.254 

Виртуальная машина 2:

eth1: 192.168.10.2 
eth1:0: 192.168.10.3

... Виртуальная машина 3:

eth1: 24.200.220.2
eth1:0: 24.200.220.3

В виртуальной машине 3 у меня есть IP-адрес, связанный со службой mysql (24.200.220.3), и я хочу, чтобы клиенты, подключенные к серверу на виртуальной машине 2 (196.168.10.2), могли подключаться к серверу (24.200.220.3) в виртуальной машине 3. И прекратить все другие коммуникации между сетями. Я пытаюсь сделать это, используя следующие правила iptables:

iptables -P FORWARD DROP

iptables -A FORWARD -p tcp -d 24.200.220.3 -s 192.168.10.2 --sport 3306 -j ACCEPT
iptables -A FORWARD -p tcp -s 24.200.220.3 -d 192.168.10.2 --dport 3306 -j ACCEPT

Чтобы проверить эти правила на виртуальной машине 3, я запускаю команду: nc -l 24.200.220.3 3306 На виртуальной машине 2 Я запускаю: nc 24.200.220.3 3306 Затем я пишу случайное слово на одной машине, но оно не отображается в другая машина. Так что это не работает. Вы знаете, что не так?

Есть небольшая ошибка. Если вы используете IP-адрес назначения базы данных, тогда вам необходимо использовать с ним порт базы данных назначения. И сделайте то же самое для исходного IP и порта.

iptables -P FORWARD DROP
iptables -A FORWARD -p tcp -d 24.200.220.3 -s 192.168.10.2 --dport 3306 -j ACCEPT
iptables -A FORWARD -p tcp -s 24.200.220.3 -d 192.168.10.2 --sport 3306 -j ACCEPT