Доброе время!
Стоит FreeBSD 4.5
Появилась задача достучаться до внутренего компа из вне Free. Почитал факи, маны, пришел к выводу что надо natd. Засучил рукава и ...
После долгих мытарств облегчил задачу до следующей.
Внутренняя сеть. Хотим открыть порт 4932 на сервер с редиректом на 23 порт внутренней машины. Ядро скомпелировано на с опциями
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
в rc.conf прописано
gateway_enable="YES"
natd_enable="YES"
natd_interface="ed0"
natd_flags=""делаем следующие команды:
ipfw add 150 divert 6666 tcp from 192.168.0.101 to 192.168.0.137 23 out
ipfw add 160 divert 7777 tcp from 192.168.0.137 23 to 192.168.0.101 in
ipfw add 200 allow tcp from any to any
natd -v -n rl0 -o 6666 -i 7777 -redirect_port tcp 192.168.0.137:23 4932при telnet 192.168.0.101 4932 простой ответ
Trying 192.168.0.101...
telnet: connect to address 192.168.0.101: Connection refused
telnet: Unable to connect to remote host
и natd молчит.
Если запускать telnet 192.168.0.137, то сразу начинается движение
Out [TCP] [TCP] 192.168.0.101:1091 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:1091 -> 192.168.0.137:23
In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:1091 aliased to
[TCP] 192.168.0.137:23 -> 192.168.0.101:1091
Что же еще ему надо?
>natd_interface="ed0"
~~~~~
>natd -v -n rl0 -o 6666 -i 7777 -redirect_port tcp 192.168.0.137:23 4932
~~~~~~
>Так на каком все же интерфейсе natd запущен?
>
>>natd_interface="ed0"
>
> ~~~~~
>>natd -v -n rl0 -o 6666 -i 7777 -redirect_port tcp 192.168.0.137:23 4932
> ~~~~~~
>>
>
>Так на каком все же интерфейсе natd запущен?
Исходя из запуска natd -v -n rl0 -o 6666 -i 7777 -redirect_port tcp 192.168.0.137:23 4932
то на rl0.
>Доброе время!
>Стоит FreeBSD 4.5
>Появилась задача достучаться до внутренего компа из вне Free. Почитал факи, маны,
>пришел к выводу что надо natd. Засучил рукава и ...
>После долгих мытарств облегчил задачу до следующей.
>Внутренняя сеть. Хотим открыть порт 4932 на сервер с редиректом на 23
>порт внутренней машины. Ядро скомпелировано на с опциями
>options IPFIREWALL
>options IPFIREWALL_VERBOSE
>options IPFIREWALL_VERBOSE_LIMIT=10
>options IPDIVERT
>options IPFIREWALL_DEFAULT_TO_ACCEPT
>options DUMMYNET
>в rc.conf прописано
>gateway_enable="YES"
>natd_enable="YES"
>natd_interface="ed0"
>natd_flags=""
>
>делаем следующие команды:
>ipfw add 150 divert 6666 tcp from 192.168.0.101 to 192.168.0.137 23 out
>
>ipfw add 160 divert 7777 tcp from 192.168.0.137 23 to 192.168.0.101 in
>
>ipfw add 200 allow tcp from any to any
>natd -v -n rl0 -o 6666 -i 7777 -redirect_port tcp 192.168.0.137:23 4932
>
>
>при telnet 192.168.0.101 4932 простой ответ
>Trying 192.168.0.101...
>telnet: connect to address 192.168.0.101: Connection refused
>telnet: Unable to connect to remote host
>и natd молчит.
>Если запускать telnet 192.168.0.137, то сразу начинается движение
>Out [TCP] [TCP] 192.168.0.101:1091 -> 192.168.0.137:23 aliased to
> [TCP] 192.168.0.101:1091 -> 192.168.0.137:23
>In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:1091 aliased to
> [TCP] 192.168.0.137:23 -> 192.168.0.101:1091
>Что же еще ему надо?Я не понял, ты хочешь из инета на внутренний комп зайти?
Какой IP у сервера?
Какой IP у внутренней машины?
>>Доброе время!
>>Стоит FreeBSD 4.5
>>Появилась задача достучаться до внутренего компа из вне Free. Почитал факи, маны,
>>пришел к выводу что надо natd. Засучил рукава и ...
>>После долгих мытарств облегчил задачу до следующей.
>>Внутренняя сеть. Хотим открыть порт 4932 на сервер с редиректом на 23
>>порт внутренней машины. Ядро скомпелировано на с опциями
>>options IPFIREWALL
>>options IPFIREWALL_VERBOSE
>>options IPFIREWALL_VERBOSE_LIMIT=10
>>options IPDIVERT
>>options IPFIREWALL_DEFAULT_TO_ACCEPT
>>options DUMMYNET
>>в rc.conf прописано
>>gateway_enable="YES"
>>natd_enable="YES"
>>natd_interface="ed0"
>>natd_flags=""
>>
>>делаем следующие команды:
>>ipfw add 150 divert 6666 tcp from 192.168.0.101 to 192.168.0.137 23 out
>>
>>ipfw add 160 divert 7777 tcp from 192.168.0.137 23 to 192.168.0.101 in
>>
>>ipfw add 200 allow tcp from any to any
>>natd -v -n rl0 -o 6666 -i 7777 -redirect_port tcp 192.168.0.137:23 4932
>>
>>
>>при telnet 192.168.0.101 4932 простой ответ
>>Trying 192.168.0.101...
>>telnet: connect to address 192.168.0.101: Connection refused
>>telnet: Unable to connect to remote host
>>и natd молчит.
>>Если запускать telnet 192.168.0.137, то сразу начинается движение
>>Out [TCP] [TCP] 192.168.0.101:1091 -> 192.168.0.137:23 aliased to
>> [TCP] 192.168.0.101:1091 -> 192.168.0.137:23
>>In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:1091 aliased to
>> [TCP] 192.168.0.137:23 -> 192.168.0.101:1091
>>Что же еще ему надо?
>
>Я не понял, ты хочешь из инета на внутренний комп зайти?
>
>Какой IP у сервера?
>Какой IP у внутренней машины?Задачу облегчил. Решил проводить эксперимент снала с внутренними адресами.
Сервер 192.168.0.101
локалка 192.168.0.137
сетевая на сервере смотрящая внутрь - rl0.
К ней примотано еще несколько ip.
Вообще, как оно должно работать?
Точнее, что будет отвечать по порту обращения на алиас ip?
когда telnet конектится на 192.168.0.101 4932, кто слушает этот порт?
>Доброе время!
>Стоит FreeBSD 4.5
>Появилась задача достучаться до внутренего компа из вне Free. Почитал факи, маны,
>пришел к выводу что надо natd. Засучил рукава и ...
>После долгих мытарств облегчил задачу до следующей.
>Внутренняя сеть. Хотим открыть порт 4932 на сервер с редиректом на 23
>порт внутренней машины. Ядро скомпелировано на с опциями
>options IPFIREWALL
>options IPFIREWALL_VERBOSE
>options IPFIREWALL_VERBOSE_LIMIT=10
>options IPDIVERT
>options IPFIREWALL_DEFAULT_TO_ACCEPT
>options DUMMYNET
>в rc.conf прописано
>gateway_enable="YES"
>natd_enable="YES"
>natd_interface="ed0"
>natd_flags=""
>
>делаем следующие команды:
>ipfw add 150 divert 6666 tcp from 192.168.0.101 to 192.168.0.137 23 out
>
>ipfw add 160 divert 7777 tcp from 192.168.0.137 23 to 192.168.0.101 in
>
>ipfw add 200 allow tcp from any to any
>natd -v -n rl0 -o 6666 -i 7777 -redirect_port tcp 192.168.0.137:23 4932
>
>
>при telnet 192.168.0.101 4932 простой ответ
>Trying 192.168.0.101...
>telnet: connect to address 192.168.0.101: Connection refused
>telnet: Unable to connect to remote host
>и natd молчит.
>Если запускать telnet 192.168.0.137, то сразу начинается движение
>Out [TCP] [TCP] 192.168.0.101:1091 -> 192.168.0.137:23 aliased to
> [TCP] 192.168.0.101:1091 -> 192.168.0.137:23
>In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:1091 aliased to
> [TCP] 192.168.0.137:23 -> 192.168.0.101:1091
>Что же еще ему надо?
Кажется нашел проблему.
В правилах ipfw нигде не сказано, что диверт надо делать с портом 4932.
поменял на
ipfw add 150 divert 6666 tcp from 192.168.0.101 4932 to any out
ipfw add 160 divert 7777 tcp from any to 192.168.0.101 4932 inстали проходить пакеты IN, пакетов OUT пока не видно. Будем искать.
После применения такого:
ipfw add 150 divert 6666 tcp from 192.168.0.101 23 to any
ipfw add 160 divert 6666 tcp from any to 192.168.0.101 23
natd -v -n rl0 -p 6666 -m -s -redirect_port tcp 192.168.0.137:23 23telnet 192.168.0.101
natd стал двигать это:
Out [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
[TCP] 192.168.0.101:3055 -> 192.168.0.101:23
In [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
[TCP] 192.168.0.101:3055 -> 192.168.0.137:23Что переделать, что бы ветка OUT пошла в нужное русло?
>После применения такого:
>ipfw add 150 divert 6666 tcp from 192.168.0.101 23 to any
>ipfw add 160 divert 6666 tcp from any to 192.168.0.101 23
>natd -v -n rl0 -p 6666 -m -s -redirect_port tcp 192.168.0.137:23 23
>
>
>telnet 192.168.0.101
>natd стал двигать это:
>Out [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
> [TCP] 192.168.0.101:3055 -> 192.168.0.101:23
>In [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
> [TCP] 192.168.0.101:3055 -> 192.168.0.137:23
>
>Что переделать, что бы ветка OUT пошла в нужное русло?ipfw add 150 divert 6666 tcp from any to any 23
ipfw add 150 divert 6666 tcp from any 23 to any
>>После применения такого:
>>ipfw add 150 divert 6666 tcp from 192.168.0.101 23 to any
>>ipfw add 160 divert 6666 tcp from any to 192.168.0.101 23
>>natd -v -n rl0 -p 6666 -m -s -redirect_port tcp 192.168.0.137:23 23
>>
>>
>>telnet 192.168.0.101
>>natd стал двигать это:
>>Out [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
>> [TCP] 192.168.0.101:3055 -> 192.168.0.101:23
>>In [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
>> [TCP] 192.168.0.101:3055 -> 192.168.0.137:23
>>
>>Что переделать, что бы ветка OUT пошла в нужное русло?
>
>ipfw add 150 divert 6666 tcp from any to any 23
>ipfw add 150 divert 6666 tcp from any 23 to any
лог изменился, но все так же :(Out [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.101:23 aliased to
[TCP] 192.168.0.101:3581 -> 192.168.0.101:23
In [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.101:23 aliased to
[TCP] 192.168.0.101:3581 -> 192.168.0.137:23
Out [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:3581 -> 192.168.0.137:23
In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:3581 aliased to
[TCP] 192.168.0.137:23 -> 192.168.0.101:3581
Out [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:3581 -> 192.168.0.137:23
>>>После применения такого:
>>>ipfw add 150 divert 6666 tcp from 192.168.0.101 23 to any
>>>ipfw add 160 divert 6666 tcp from any to 192.168.0.101 23
>>>natd -v -n rl0 -p 6666 -m -s -redirect_port tcp 192.168.0.137:23 23
>>>
>>>
>>>telnet 192.168.0.101
>>>natd стал двигать это:
>>>Out [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
>>> [TCP] 192.168.0.101:3055 -> 192.168.0.101:23
>>>In [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
>>> [TCP] 192.168.0.101:3055 -> 192.168.0.137:23
>>>
>>>Что переделать, что бы ветка OUT пошла в нужное русло?
>>
>>ipfw add 150 divert 6666 tcp from any to any 23
>>ipfw add 150 divert 6666 tcp from any 23 to any
>лог изменился, но все так же :(
>
>Out [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.101:23 aliased to
> [TCP] 192.168.0.101:3581 -> 192.168.0.101:23
>In [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.101:23 aliased to
> [TCP] 192.168.0.101:3581 -> 192.168.0.137:23
>Out [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.137:23 aliased to
> [TCP] 192.168.0.101:3581 -> 192.168.0.137:23
>In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:3581 aliased to
> [TCP] 192.168.0.137:23 -> 192.168.0.101:3581
>Out [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.137:23 aliased to
> [TCP] 192.168.0.101:3581 -> 192.168.0.137:23у тебя что еще запущено? диверт до natd идет который прописан в rc.conf? никаких ipnat не запущено?
>>>>После применения такого:
>>>>ipfw add 150 divert 6666 tcp from 192.168.0.101 23 to any
>>>>ipfw add 160 divert 6666 tcp from any to 192.168.0.101 23
>>>>natd -v -n rl0 -p 6666 -m -s -redirect_port tcp 192.168.0.137:23 23
>>>>
>>>>
>>>>telnet 192.168.0.101
>>>>natd стал двигать это:
>>>>Out [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
>>>> [TCP] 192.168.0.101:3055 -> 192.168.0.101:23
>>>>In [TCP] [TCP] 192.168.0.101:3055 -> 192.168.0.101:23 aliased to
>>>> [TCP] 192.168.0.101:3055 -> 192.168.0.137:23
>>>>
>>>>Что переделать, что бы ветка OUT пошла в нужное русло?
>>>
>>>ipfw add 150 divert 6666 tcp from any to any 23
>>>ipfw add 150 divert 6666 tcp from any 23 to any
>>лог изменился, но все так же :(
>>
>>Out [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.101:23 aliased to
>> [TCP] 192.168.0.101:3581 -> 192.168.0.101:23
>>In [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.101:23 aliased to
>> [TCP] 192.168.0.101:3581 -> 192.168.0.137:23
>>Out [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.137:23 aliased to
>> [TCP] 192.168.0.101:3581 -> 192.168.0.137:23
>>In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:3581 aliased to
>> [TCP] 192.168.0.137:23 -> 192.168.0.101:3581
>>Out [TCP] [TCP] 192.168.0.101:3581 -> 192.168.0.137:23 aliased to
>> [TCP] 192.168.0.101:3581 -> 192.168.0.137:23
>
>у тебя что еще запущено? диверт до natd идет который прописан в
>rc.conf? никаких ipnat не запущено?
запущен squid, portsentry. Порт 23 на 192.168.0.101 в inet.conf закоментирован. Кроме divert и natd ничем не пользуюсь, так что ipnat нету. А как проверить идет диверт до натд или нет? Если в смысле диверт раньше натд запускается, то да. Все стартует из одного скрипта:ipfw -f flush
ipfw add 150 divert natd tcp from any to any 23
ipfw add 150 divert natd tcp from any 23 to any
ipfw add 300 allow all from any to any
natd -v -u -a 192.168.0.101 -redirect_port tcp 192.168.0.137:23 23если применить telnet 192.168.0.137, то получаем:
Out [TCP] [TCP] 192.168.0.101:1068 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:1068 -> 192.168.0.137:23
In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:1068 aliased to
[TCP] 192.168.0.137:23 -> 192.168.0.101:1068
Out [TCP] [TCP] 192.168.0.101:1068 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:1068 -> 192.168.0.137:23
Out [TCP] [TCP] 192.168.0.101:1068 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:1068 -> 192.168.0.137:23
In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:1068 aliased to
[TCP] 192.168.0.137:23 -> 192.168.0.101:1068
Out [TCP] [TCP] 192.168.0.101:1068 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:1068 -> 192.168.0.137:23
Out [TCP] [TCP] 192.168.0.101:1068 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:1068 -> 192.168.0.137:23
In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:1068 aliased to
[TCP] 192.168.0.137:23 -> 192.168.0.101:1068
Out [TCP] [TCP] 192.168.0.101:1068 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:1068 -> 192.168.0.137:23
In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:1068 aliased to
[TCP] 192.168.0.137:23 -> 192.168.0.101:1068
Out [TCP] [TCP] 192.168.0.101:1068 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:1068 -> 192.168.0.137:23
In [TCP] [TCP] 192.168.0.137:23 -> 192.168.0.101:1068 aliased to
[TCP] 192.168.0.137:23 -> 192.168.0.101:1068
Out [TCP] [TCP] 192.168.0.101:1068 -> 192.168.0.137:23 aliased to
[TCP] 192.168.0.101:1068 -> 192.168.0.137:23и все работает.
Проброс ftp-обращений к внутр. серверу сделан так/etc/rc.conf:
firewall_enable="YES"
firewall_quiet="YES"
natd_enable="YES"
# xl0 - внутр. интерфейс
natd_interface="xl0"
natd_flags="-f /etc/natd.conf"/etc/natd.conf:
unregistered_only yes
redirect_port tcp 192.168.0.3:ftp-data my.host.ru:ftp-data
redirect_port tcp 192.168.0.3:ftp my.host.ru:ftp
>Проброс ftp-обращений к внутр. серверу сделан так
>
>/etc/rc.conf:
> firewall_enable="YES"
> firewall_quiet="YES"
> natd_enable="YES"
> # xl0 - внутр. интерфейс
> natd_interface="xl0"
> natd_flags="-f /etc/natd.conf"
>
>/etc/natd.conf:
> unregistered_only yes
> redirect_port
> tcp 192.168.0.3:ftp-data my.host.ru:ftp-data
> redirect_port
> tcp 192.168.0.3:ftp my.host.ru:ftp
А диверт как описан?
Если правильно понял, что тебе надо, то вот оно самое, что у меня работает.Задача. К нам обращаются на порт 3333, мы отправляем кренделя на 1.2.3.4 6666. Имеем один фейс rl0.
Как это сделать:
1. ipfw add 50 divert 8668 ip from any to any via rl0
2. /sbin/natd -f /etc/natd.conf -n rl0
3. Содержимое /etc/natd.conf
redirect_port tcp 1.2.3.4:6666 3333
>Если правильно понял, что тебе надо, то вот оно самое, что у
>меня работает.
>
>Задача. К нам обращаются на порт 3333, мы отправляем кренделя на 1.2.3.4
>6666. Имеем один фейс rl0.
>
>Как это сделать:
>
>1. ipfw add 50 divert 8668 ip from any to any via
>rl0
>
>2. /sbin/natd -f /etc/natd.conf -n rl0
>
>3. Содержимое /etc/natd.conf
> redirect_port tcp 1.2.3.4:6666 3333
Не идет. Мне кажется, что собака зарыта где-то в другом. Все настройки диверт и натд уже перебрал. Заметил одну штуку, у меня ядро скомпелировано без опции
options IPFIREWALL_FORWARD
может в этом дело?
>Не идет. Мне кажется, что собака зарыта где-то в другом. Все настройкиЧто значит "не идет". Если "не подходит" - это ладно. А если "не дает эффект", который должен давать и который был мною описан, то у тебя что-то не так. Проверь все заново.
>>Не идет. Мне кажется, что собака зарыта где-то в другом. Все настройки
>
>Что значит "не идет". Если "не подходит" - это ладно. А если
>"не дает эффект", который должен давать и который был мною описан,
>то у тебя что-то не так. Проверь все заново.
Не идет, значит все как было так и осталось. Обратно пакет не доходит. блин.
Проверяю и проверяю, конца и краю нету :(
>А диверт как описан?divert система сама подымает чере rc скрипты.