#!/bin/dash
# очистка правил iptables
iptables -F
iptables -t nat -F
iptables -t mangle -F
# политика по умолчанию: разрешается входящий и исходящий трафик, руками запрещаем проходящий через него трафик $
iptables -P FORWARD DROP
# Отбрасывать весь трафик при состоянии соединения invalid (исп модуль conntrack)
iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
# Принимать трафик только в случае состояния соединения established или related
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Передавать трафик из источника 10.0.2.0/23 с if eth1 (input) в eth0 (output)
iptables -A FORWARD -s 10.0.2.0/23 -i eth1 -o eth0 -j ACCEPT
# nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Появилась надобность дать доступ из 10.22.103.0 к машине внутри 10.0.2.0 (10.0.3.45) на порт 1521, добавляю:
Да, действительно, Вы правы, но результат не изменился. Читал здесь что бывает такое если не хватает модулей, но iptables же должен сам их подгружать? Если честно не понял как их подгрузить руками.
Честно говоря, логичнее просто маршрутизировать пакеты между двумя сетками, нежели нат городить.
Хотя тут, похоже, 10.22.103.0 - сеть провайдера, отсюда и нат :)
В любом случае, что говорит traceroute 10.0.3.45 с машины в 10.22.103.0?
Ну и, похоже, тут дело в том, что не подгружается одно из правил:
root@NAT:/home/user# ./ipt
iptables: No chain/target/match by that name.
В начало скрипта добавляете set -x и смотрите, на какую строчку ругается
Честно говоря, логичнее просто маршрутизировать пакеты между двумя сетками, нежели нат городить.
Хотя тут, похоже, 10.22.103.0 - сеть провайдера, отсюда и нат
В любом случае, что говорит traceroute 10.0.3.45 с машины в 10.22.103.0?
Ну и, похоже, тут дело в том, что не подгружается одно из правил:
root@NAT:/home/user# ./ipt
iptables: No chain/target/match by that name.
В начало скрипта добавляете set -x и смотрите, на какую строчку ругается
root@NAT:/home/user# ./ipt
++ iptables -F
++ iptables -t nat -F
++ iptables -t mangle -F
++ iptables -P FORWARD DROP
++ iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
++ iptables -A FORWARD -s 10.0.2.0/23 -i eth1 -o eth0 -j ACCEPT
++ iptables -A FORWARD -d 10.0.3.45 -p tcp --dport 1521 -i eth0 -o eth1 -j ACCEPT
++ iptables -A PREROUTING -s 10.22.103.2/28 -p tcp --dport 1521 -j DNAT --to-destination 10.0.3.45:1521
iptables: No chain/target/match by that name.
++ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
получается что ругается на ++ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE? раньше не ругался, эта строка была изначально.
вот так выглядит целиком: Spoiler
set -x
#!/bin/dash
# очистка правил iptables
iptables -F
iptables -t nat -F
iptables -t mangle -F
# политика по умолчанию: разрешается входящий и исходящий трафик, руками запрещаем проходящий через него трафик (неудовл правилам)
iptables -P FORWARD DROP
# Отбрасывать весь трафик при состоянии соединения invalid (исп модуль conntrack)
iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
# Принимать трафик только в случае состояния соединения established или related
#iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Передавать трафик из источника 10.0.2.0/23 с if eth1 (input) в eth0 (output)
iptables -A FORWARD -s 10.0.2.0/23 -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -d 10.0.3.45 -p tcp --dport 1521 -i eth0 -o eth1 -j ACCEPT
iptables -A PREROUTING -s 10.22.103.2/28 -p tcp --dport 1521 -j DNAT --to-destination 10.0.3.45:1521
#iptables -A FORWARD -d 10.0.2.50 -p tcp --dport 1521 -i eth0 -o eth1 -j ACCEPT
#iptables -A POSTROUTING -d 10.0.3.45 -p tcp --dport 1521 -j SNAT --to-source 10.22.103.2
# nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Пробую исключить один ip-адрес, добавляю такое правило:
А куда Вы его добавляете? В Вашем списке правил я его не увидел.
[NOSTRADAMUS MODE]
Небось, добавляете в конец, тогда у Вас сначала отрабатывает REDIRECT, и только потом следует Ваше новое правило, до которого очередь просто не доходит.
[/NOSTRADAMUS MODE]
Коротко: порядок правил имеет значение. Если пакет попадает под какое-то правило, то следующие ниже правила к нему уже не применяются.
Добавьте Ваше правило ДО редиректа.
Пускай скрипят мои конечности.
Я - повелитель бесконечности... Мой блог