Добрый день, Уважаемые.
Есть локалка, огорожена забором на FreeBSD 12.1, внутри кроме стандартных MS компов, есть машинка на Линуксе, на которой MySQL база, с которой работают локальные граждане и которая вместе с компом на Линуксе не моя, а внешних подрядчиков. Черный ящик для меня, вообщем. Обычно подрядчики/программисты клиентскую часть обновляли, например, через ТимВьювер, на тестовом MS-компе, а потом я уже этого клиента разносил по локальным гражданам по MS-компам. А тут они попросили сделать им прямой доступ к их серваку на Линуксе, по 22 и 3306 портам. А проброс портов у меня работал, RDP, например, WWW. Щас сделаю, говорю, трубочку не кладите, проверим. Ага...
Не вышел каменный цветок у Данилы мастера. Коннекшен рефьюзед, однако.
Вообщем, раньше был у меня natD, а тут на "ядрЁный" нат решил перейти. И затык с пробросом портов через фрю на линух. На мs - проброс работает. Есть ещё ньюанс, отличия в работе натД и ядерного. Но это чуть позже.
Вообщем, Уважаемые, подскажите, в какую сторону копать, и хде сЦобакен порылся?Конфиги:
FreeBCD_12.1 ядро собрано с опциями:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
#Просмотр и выполнение правил IPFW по порядку:
#sysctl net.inet.ip.fw.one_pass: 1
#IPFIREWALL
#Забор
oif="re0"
oip="X.X.X.X"
onet="X.X.X.X/29"
#Огород
iif="re1"
iip="192.168.16.3"
inet="192.168.16.0/24"
# определяем пакеты через NAT
${ipfw} add nat 1 all from "table(0)" to any out via ${oif}
${ipfw} add nat 1 all from any to ${oip} in via ${oif}
# проброс портов
${ipfw} nat 1 config if ${oif} \
redirect_port tcp 192.168.16.1:22 22 \ -> попытка проброса порта на Linux - коннект рефьюзед
redirect_port tcp 192.168.16.1:3306 3306 \ -> попытка проброса порта на Linux - коннект рефьюзед
redirect_port tcp 192.168.16.33:3389 3389 \ -> коннектится влёт. RDP
redirect_port tcp 192.168.16.12:8888 8888 -> коннектится влёт. WWW
#Заворачиваем всё, что проходит через внешний интерфейс в нат
${ipfw} add nat 1 ip from any to any via ${oif}
# разрешаем входящие TCP и UDP на те IP, которые имеют доступ в инет
#${ipfw} add allow udp from any to "table(0)" in via ${oif}
#${ipfw} add allow tcp from any to "table(0)" in via ${oif}
# разрешаем все установленные соединения
${ipfw} add allow tcp from any to any established
# разрешаем трафик внутренней сети на внутреннем ифейсе
${ipfw} add allow ip from ${inet} to any via ${iif}
${ipfw} add allow ip from any to ${inet} via ${iif}
# запрещаем всё остальное и пишем в лог
${ipfw} add 65534 deny log all from any to any
И про ньюанс, в отличие работы натД от ядерного. Есть у меня пара правил по безопасности, например, это на натД отсекало все входящие и пробрасываемые соединения для всех, кроме доверенных айпи. Например, мой домашний внешний айпишник, или программиста 1С тоже домашний. Портов и айпи сюда добавить нужных без проблем:
# Входящие/проброс через калитку в заборе, только для себя, любимого, порт 22
${ipfw} add pass tcp from мой.домашний.айпи to ${oip} 22 in via ${oif}
${ipfw} add pass tcp from ${oip} 22 to мой.домашний.айпи out via ${oif}
#Common Rules for SSH
#${ipfw} add allow tcp from any to ${oip} 22 in via ${oif}
${ipfw} add allow log tcp from any to me 22
А ньюанс в том, что сейчас у меня на "ядрЁном" нате, это правило работает только для входящих на фрю, например, а пробрасываемые идут, увы, мимо - не фильтруются. Почему?
Вот и вопрос, куда копать, чтобы через фрю пробросить порты на линукс? - из локалки этот линукс 100% доступен по нужным портам, да и фильтровать по айпи пробрасываемые соединения хотелось бы.
Может, подскажет кто, в чем беда, почему каменный цветочек не выходит?