Добрый день.
Помогите, пожалуйста, новичку решить вот такую проблему:Есть роутер на FreeBSD 6.1, работает natd.
Внешний IP 213.59.235.218/29
Внутренний IP 10.172.0.1/24
В принципе, все устраивает. Маршрутизация работает, Адреса подменяются.
Но возникла потребность выпустить несколько адресов из внутренний сети под реальными IP в большой мир.
Конкретно:
Адрес 10.172.0.90 -> 213.59.235.219
Адрес 10.172.0.91 -> 213.59.235.220
Адрес 10.172.0.92 -> 213.59.235.221
При этом, все остальные внутренние адреса должны ходить через нат как и раньше.
Содержимое файла rc.conf
#--------------------------------------------------------------------
defaultrouter="213.59.235.217"
gateway_enable="YES"
hostname="router.mydomain.ru"
ifconfig_myk0="inet 213.59.235.218 netmask 255.255.255.0 up"
ifconfig_em0="inet 10.172.0.1 netmask 255.255.255.0 up"
#--------------------------------------------------------------------
firewall_enable="YES"
inetd_enable="YES"
natd_enable="YES"
natd_interface="myk0"
#--------------------------------------------------------------------
Нашел кучу статей про то, как легко и непринужденно люди делают редирект (в т.ч. и на этом форуме). Однако, не все так просто. Ни один совет не помог. А проблема вот в чем:
При существующей конфиге делаем так:
# natd -redirect_address 10.172.0.90 213.59.235.219
Получаем вот это:
# natd: instance default: aliasing address not given
Хорошо. Алиас, так алиас. Делаем так:
# natd -a 213.59.235.219
Получаем вот это:
# natd: Unable to bind divert socket.: Address already in use
Какой именно адрес занят - дошло не сазу. Сокет 8668! Ну хорошо. Пусть будет сокет:
# natd -p 8669 -a 213.59.235.219 -redirect_address 10.175.0.90 213.59.235.219
Прожувал молча. Однако, отвалился основной нат, и этот не заработал.
Причем sockstat показывает, что natd юзает два сокета 8668 и 8669
Че мне с ним сделать?
P:S использую natd по религиозным соображениям. ipnat пока юзать не хочу.