минимальная подсеть
2282
15
Простите неграмотность, понимаю что вопрос тривиалный. Не претендую на развернутый ответ, хватит просто ключевых слов и где почитать.

Имеем несколько компьютеров, на всех Linux (Red Hat) и вычислительный софт. Пока их было 2, они мирно жили в институтской сети с "наружными" IP (194.85....). Теперь их 4, столько IP мне не дадут, надо выделять подсеть. Один, понятно, снабжаю 2 сетевыми картами, одна- внешний IP и окно в мир, вторая - во внутр. сеть (192.168...). А вопрос вот в чем. Какой минимальный набор сущностей нужен, чтобы видеть подсеть извне - нужен только telnet и ftp? Раньше входили просто по IP-адресам, но теперь-то они внутри. Что я должен поставить/настроить на шлюзовом компьютере?
Максимыч
Правильно сконфигурированое ядро, а так же ipchains или iptables, в зависимости от того , что идет в комплекте. С их помощью можно организовать и NAT и PAT. Если ядро серии 2.4 - обычно это iptables.
Максимыч
Курить доки по iptables (Я так понял, ядра таки 2.4.х) по ключевому слову NAT. Для подобной организации сети больше ничего не надо.

На остальных машинах надо будет указать в качестве шлюза машинку с двумя сетевухами. Естественно по "серому" адресу.

ЗЫ: Советую с telnet не связываться - дыра та ещё будет. Лучше сразу ставить ssh-server
Максимыч
Первый путь - пробрасывание только порта:
1) iptables -t nat -A PREROUTING -p tcp -d EXT_R_IP --dport 10000 -j DNAT --to-destination LOCAL_IP:80
2) iptables -A FORWARD -i eth0 -d LOCAL_IP -p tcp --dport 22 -j ACCEPT

Второй вариант - выброс всей машины наружу:
1) ifconfig eth0:0 NEW_IP netmask NETMASK broadcast BROADCAST
2) route add NEW_IP gw GW netmask 0.0.0.0 metric 1 dev eth0:0
3) iptables -t nat -A PREROUTING -p tcp -d NEW_IP -j DNAT --to-destination LOCAL_IP
4) iptables -A FORWARD -i eth0 -d LOCAL_IP -j ACCEPT

в ощем много можно придумать :ухмылка:
Stalker
До сих пор это решалось через host.deny
ALL:ALL except ...
мне казалось что этого достаточно - или я не прав?
buzzer
Спасибо, buzzer!
Но все равно не врубаюсь.
Как я должен ИЗВНЕ обращаться к одному из внутренних компьютеров? Ведь теперь снаружи они все делают вид что у них один IP, нет?
Один вариант я вижу - войти (к примеру тем же телнетом) на шлюзовой, а уже с него обращаться к внутренним. А напрямую как?
Максимыч
Извиняюсь, но из первого твоего топика я не понял твоих задач... Тебе нужно чтобы из сети с реальными адресами могли обращаться к машинам в подсети с "серыми" IP... Тогда NAT скорее всего тебе не подходит. Он хорош при обратной задаче.
Тогда у меня есть вопрос: какие сервисы предоставляют "внутренние" машины: ftp, http или еще чего?
Максимыч
Напрямую - никак. Нет айпишника - нет связи. Изнутри выход по фтп и телнету будет, а снаружи - нет. Вопрос напрашивается: а зачем серверы поднимать на каждой машине? ИМХО лучше сделать это на одной, которая с двумя картами. Или они все суть серверы? Тогда реальные айпишники под каждый выбивать надо. Негоже серверу без айпишника.
Barlog
> Тогда NAT скорее всего тебе не подходит. Он хорош при обратной задаче.
Вот и у меня то же впечатление.
> какие сервисы предоставляют "внутренние" машины?
До сих пор хватало ftp и telnet. Надо подготовить на машине скрипт задачи, запуситить ее, а когда сосчитает (через пару часов или дней) скачать результат, вот и все. Все это обычно делается с внешних рабочих станций из-под Win.
Максимыч
Ну тогда вообще проблем нет. Скрипт готовится через два телнета. Результат программа пишет в подмонтированный с машины с двумя картами каталог. Забирается через один фтп.
Максимыч
Нужен iptables, ipchains не потянет. Допустим у тебя одна внешняя машина: shared. Имеетсявнутренняя подсеть ip_local1-ip_local4. Делаешь следующее:
iptables -t nat -A PREROUTING -i eth0 -d shared -p tcp --dport 30 -j DNAT --to-destination ip_local1:22
Этим ты можешь войти на локальную машину по ssh если обратишься к 30-ому порту внешнего сервера. Аналогично со всеми службами.
За точность не уверен, но примерно так надо делать. Кстати есть ли поддержка config_ip_nf_nat в ядре.
EvilX
>> Нужен iptables, ipchains не потянет.

Не совсем так. Если нет iptables, то же самое можно сделать с помощью
ipmasqadm portfw.