Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование *NIX систем > Не могу совладать с NAT'ом..


Автор: Kurt 19.10.2005, 01:08
В который раз пытаюсь заставить себя совладать с "Линуксовым" NAT'ом.
Пишу:
Цитата
ip rule add from 192.168.0.2 nat 62.183.9.23

все хорошо. но далее:
Цитата
[root@super ~]# ip route add nat 62.183.9.23 via 192.168.0.2
RTNETLINK answers: Invalid argument

Подскажите, что не так? Что и где посмотреть? smile
Не судите строго - я пытаюсь разобраться.

Автор: bilbobagginz 19.10.2005, 02:07
давай по-маленьку:
1. у тебя есть компутер smile
2. в нем 2 сетевых устройства:
eth0: ___.___.___.___
eth1: ___.___.___.___
3. смотрит вовнутрь устройство eth_
4. хочется тебе чтобы вся сетка ___.___.___.___/__ NAT-илась через устройство eth_

заполните пустые поля smile



Автор: Kurt 19.10.2005, 02:21
1. Есть. Даже два. smile
2. eth0: 192.168.0.1
ppp: 62.183.9.23 (dial-up соединение. динамический IP, но сейчас именно такой smile)
3. eth0
4. 192.168.0.0 (netmask 255.255.255.0) через ppp.

То есть по-другому. Есть Linux с выходом в Интернет через модем. У него есть сетевая карточка (192.168.0.1). Он связан с другим компьютером, у к-го сетевая крточка с адресом 192.168.0.2.
Задача: Соорудить компу 192.168.0.2 выход в интернет.

Автор: bilbobagginz 19.10.2005, 03:38
ок. не знаю чего ты там намутил с ip route, ip rule, на всякий случай скинь эти настройки как-то.
вне зависимости дистры:
Код

#!/bin/sh
echo "1" > /proc/sys/net/ipv4/ip_forward
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

тут ты уже должен быть способен кататься по интернету.

далее копай в /etc как все это дело автоматизировать. если ты в дебиановидной дистре:
1. echo "iptable_nat" >> /etc/modules
2. редактируем /etc/network/options:
изменяем ip_forward=no на ip_forward=yes
3. команду вкл. фаервола - запиши в /etc/network/if-up.d как скрипт:
Код

#!/bin/sh
# iptables
if [ $1 == ppp0 ]; then 
   if [ -d /proc/sys/net/ipv4/conf/ppp0 ]; then
      echo -n "Enable IP-masquerading via $1 .. "
      iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
      echo "done"
   fi
fi

его надо chmod +x
потом, когда начнешь изголяться - добавишь к концу свои новые прибамбасы.
или напишешь свой /etc/init.d/iptables

poka.

Автор: Kurt 19.10.2005, 17:59
Благодарю. Все получилось в лучшем виде. smile
Поступил так (может, кому пригодится, у меня Fedora Core 3):
в /etc/sysctl.conf:
Цитата
net.ipv4.ip_forward = 1


далее создал файл /etc/modules.conf и записал туда:
Цитата
iptable_nat


и наконец в /etc/sysconfig/iptables:
Цитата
-A POSTROUTING -o ppp0 -j MASQUERADE


З.Ы. Предлагаю занести ответ на этот вопрос в FAQ. имхо, очень частая проблемка для начинающих.

Добавлено @ 18:04
Да, совсем забыл.
Для того, чтобы с других машин обращаться к хостам интернета по именам, на Linux'е должна быть запущена служба named.

Автор: bilbobagginz 19.10.2005, 20:05
насчет твоей добавки: это не правда. главное чтобы служба ДНС провайдера работала.
на внутренних машинах можно просто вписать ДНС провайдера.
если ты хочешь удобств - ты можешь обозвать внутренние компутеры какими-то именами, и запустить свой сервис ДНС, внутренний. но это не обязательно. можно работать с именами и посредством файла /etc/hosts - создав общий такой файл все компутеры внутренней сети будут знать имена других.
в общем именная система ( ДНС ) очень полезна не только для удобства. есть службы ( почта, ssh ), которые могут полагаться на правильный ответ ДНС сервера ( прямой:имя->адрес, и обратный:адрес->имя)

пока

Автор: Kurt 19.10.2005, 20:48
Цитата
насчет твоей добавки: это не правда

Нуу... Да, согласен. Можно, конечно, на всех внутренних машинах прописывать IP-адреса DNS-серверов провайдера. Но когда используется dial-up, да еще и постоянно меняешь провайдеров (покупаешь разные карточки) - по-моему, проще на внутренних компах в качестве DNS-сервера прописать раз и навсегда адрес Linux-компа, а на нем поднять named.

Автор: bilbobagginz 19.10.2005, 21:04
Цитата

З.Ы. Предлагаю занести ответ на этот вопрос в FAQ. имхо, очень частая проблемка для начинающих.

добавлено.

насчет настройки ДНС vs hosts file. все конечно зависит от человека и нужд.

Автор: Плаха 10.11.2005, 10:24
bilbobagginz как включить нат понятно. а как при этом разрешить только HTTP и FTP. А остальное закрыть

Автор: bilbobagginz 11.11.2005, 11:57
заметим, что вопрос не критический для "работоспособности"....
ты попробовал/а что то сделать и не работает ?
что именно не работает ?

(не забудем посмотреть в 3-й пункт http://forum.vingrad.ru/index.php?showtopic=53198)




Автор: Плаха 11.11.2005, 12:07
хочю поднять нат, но при этом закрыть лишние порты.
Я в линухе новичок, если можно приведи маленький пример

Автор: bilbobagginz 11.11.2005, 18:28
дорогой/ая "Плаха".
Пожалуйста пройдитеся по моему предыдущему ответу, и укажите на непонятные слова.

спасибо.



Автор: bilbobagginz 14.11.2005, 23:55
добавлено в FAQ: http://vingrad.ru/LINUX-NIX-002972

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)