> Спасибо, Вы настоящий друг!Да ладно!
> Остался лишь последний вопрос, и опять же связанный с ppp-nat: он не
> воспринимает форвардинг портов, записанных в ppp.conf —
>> nat port tcp 10.0.1.10:80 80
Вы же правильно указали строку, синтаксис именно такой.
> При этом через костыль под названием portfwd всё работает. В связи с
> этим у меня вопрос, как настроить это дело хотя бы через
> ipfw, потому как portfwd с ранжированием работать не умеет, а вручную
> вбивать весь массив 30000-35000 для работы FTP в конфиг-файл я сойду
> с ума.
Да не вопрос! Легко!
Хоть во двор, хоть в коридор, тьфу ты, хотел сказать, хоть через ipfw, хоть через pf
Там в конфигах диапазон портов можно задать.
А с ума сходить не надо. Успеете. ))
Лезем в man ppp или смотрим /usr/share/examples/ppp/ppp.conf.sample
man ppp
секция AUTOMATIC DIALING
Смотрите пример определений в
/usr/share/examples/ppp/ppp.conf.sample (формат файла /etc/ppp/ppp.conf довольно простой).
Каждая строка содержит один комментарий, включение, метку или команду:
строка, начинающаяся с символа "#", рассматривается как строка комментарий.
Ведущие пробелы игнорируются при определении строки как строки комментария.
включение представляет собой строку, начинающуюся со слова "!include".
Она должна иметь один аргумент - включаемый в него файл.
Вы, возможно, захотите прописать и установить "!include ~/.ppp.conf" для
совместимости со старыми версиями ppp.
имя метки начинается с самого начала строки, затем следует двоеточие (":").
строка с командой должна содержать вначале минимум один пробел или символ табуляции.
Смотрим /usr/share/examples/ppp/ppp.conf.sample
Если мы с помощью nat перенаправляем ftp и http на внутреннюю машину:
nat port tcp 10.0.0.2:ftp ftp
nat port tcp 10.0.0.2:http http
То есть, повторюсь, пример перенаправления вы привели правильно.
А 5 тысяч строк в /etc/ppp/ppp.conf прописывать вручную, действительно, тяжело. ))
Поэтому сделаем так.
Сгенерируем файл ppp.port в котором и укажем все ваши перенаправления и порты.
perl -le 'for (30000..35000){print "nat port tcp 10.0.1.10:$_ $_"}' >/etc/ppp/ppp.port
Прописываем включение этого файла в основном кофигурационном файле ppp.conf
Пробела или tab вначале быть не должно! Это важно.
!include /etc/ppp/ppp.port
А можно поступить по другому, использовать для поднятия pppoe не ppp а mpd установив его предварительно из портов.
Это будет лучше.
Устанавливаем mpd
cd /usr/ports/net/mpd5/
make install clean
rehash
cd /usr/local/etc/mpd5/
ee mpd.conf
startup:
# configure mpd users
set user foo bar admin
set user foo bar
# configure the console
set console self 127.0.0.1 5005
set console open
# configure the web server
set web self 0.0.0.0 5006
set web open
default:
# MY PPPOE
load pppoe0
pppoe0:
create bundle static B1
set iface route default
set iface up-script "/usr/local/etc/mpd5/ng0_up.sh"
set iface down-script "/usr/local/etc/mpd5/ng0_down.sh"
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
create link static L1 pppoe
set link action bundle B1
# username and password for pppoe
set auth authname "username"
set auth password "password"
set link max-redial 0
set link mtu 1492
set link keep-alive 5 15
set pppoe iface bge0
open
cat /usr/local/etc/mpd5/ng0_up.sh
#!/bin/sh
/sbin/ipfw -q add 50 nat 1 all from any to any via ng0
/sbin/ipfw -q nat 1 config log if ng0 redirect_port tcp 10.0.1.10:30000-35000 30000-35000
cat /usr/local/etc/mpd5/ng0_down.sh
#!/bin/sh
/sbin/ipfw -q delete 50
/sbin/ipfw -q nat 1 delete
Здесь используется nat (!не natd)
Если будете пробовать по этому варианту, то вам надо убрать правила, относящиеся к natd
Если в ядре нет поддержки nat, обеспечить загрузку необходимых модулей.
Но лучше вкомпилить в ядро NAT и NETGRAPH