URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 5598
[ Назад ]

Исходное сообщение
"Iproute2"

Отправлено decn , 30-Янв-01 18:45 
Привет Всем!
Столкнулся с задачей. Стоит Linux-компьютер  с двумя сетевыми картами и на
нём поднят Masquerading. Одна карточка подключена к ине-ту (eth1, с реальным
IP), вторая (eth0, 192.168.0.1) смотрит в сторону локальной сети. Нужно
назначить компьютеру из локальной сети реальный ip и обеспечить выход в мир.
Вроде, всё это решается при помощи iproute2, но не получилось (да и док по
ней маловато). Может кто сталкивался?

Содержание

Сообщения в этом обсуждении
"RE: Iproute2"
Отправлено MagMike , 31-Янв-01 01:07 
не iproute2, а ipchains...
читай HOWTOs по ipchains и masquerading.

"RE: Iproute2"
Отправлено decn , 31-Янв-01 14:38 
Какой ты умный, это что-то... Читал, привожу цитату. А если не знаешь - не лезь.
7.30 ( MULTIPLE IPs ) - I have several EXTERNAL IP addresses that I want to PORTFW to several internal machines. How do I do this?
You DON'T. MASQ is a 1:Many NAT setup which not the correct tool to do what you are looking for. You are looking for a Many:Many NAT solution which is traditional NAT setup. Give a look at the shaping FAQ entry below for more details on the IPROUTE2 tool that will do what you need.

For people out there who are considering enabling multiple IP addresses on one internal NIC using "IP Alias" and then PORTFWed ALL of those ports (0-65535) and used IPROUTE2 to maintain the proper source/destination IP pairs, this has been done SUCCESSFULLY on 2.0.x kernels and less successfully on 2.2.x kernels. Regardless of success, it isn't the proper way to do it and is not a supported MASQ configuration. Please, give IPROUTE2 a look.. its the right way to do true NAT.


"RE: Iproute2"
Отправлено MagMike , 31-Янв-01 19:12 
Чем грубить, лучше б вопрос понятней поставил.
А то "eth1, с реальным IP". т.е. только один IP у тебя реальный.
А для НАТа тебе столько реальных адресов, сколько машин хочешь странслировать наружу.

посмотри, в исходниках iproute2 есть файл doc/ip-cref.tex. там про nat упоминается.


"RE: Iproute2"
Отправлено decn , 31-Янв-01 19:44 
Sorry, ,был не прав. Провайдер выделил подсеть из восьми ip-адресов. На первом адресе (Х.Х.Х.161) висит ISDL модем провайдера. На адресе Х.Х.Х.162 стоит Linux (RedHat 6.0 с ядром 2.2.16) с двумя сет. картами. Вторая имеет адрес 192.168.0.21. На Linux'е поднят Masquerading. Как заставить машину из внутренней сети (192.168.0.35) с Win2000 объявить себя в и-те как X.X.X.163? Может, на e-mail слать?

"RE: Iproute2"
Отправлено MagMike , 01-Фев-01 12:19 
А для чего она (W2K) должна быть снаружи?
если как http-сервер, то может попробовать на наружный адрес линуха повесить этот самый x.x.x.163 и все запросы на него форвардить на w2k с помощью ipportfw (IPMASQADM)
читай в IP-Masquerade.HOWTO
"6.2.  Incoming services"

"RE: Iproute2"
Отправлено Maxim Chirkov , 31-Янв-01 16:10 
См. пример в http://www.opennet.me/base/net/mc_route.txt.html

"RE: Iproute2"
Отправлено Z0termaNN , 31-Янв-01 16:40 
вообщем-то можно сделать, только каждому
компьютеру в локальной сети придется искать
внешний адрес.
т.е. есть маршрутизатор,
- eth0 - 192.168.0.1
- eth1 - 194.194.194.1

и есть компьютер в локальной сети, напр
- eth0 - 192.168.0.55

выделяем для него реальный адрес - 194.194.194.55,
под которым он будет виден извне.

теперь на маршрутизаторе делаем что-то типа

ip route add nat 194.194.194.55 via 192.168.0.55
ip rule add prio 100 from 192.168.0.55 nat 194.194.194.55

это в общих чертах, естественно следует добавить
правил для корректной работы в локальной сети.


"RE: Iproute2"
Отправлено decn , 31-Янв-01 17:28 
Z0termaNN, спасибо большое за ответ, но хотелось бы уточнить. Будет ли жить Masquerading? и что значит "каждому компьютеру в локальной сети придется искать внешний адрес"?
Спасибо!

"RE: Iproute2"
Отправлено Z0termaNN , 31-Янв-01 20:19 
[font size="1" color="#FF0000"]Последняя редакция от 31-Янв-01 20:24  ()[/font][p][font size="1" color="#FF0000"]Последняя редакция от 31-Янв-01 20:20  ()[/font]

по поводу адресов. смысл данного решения
следующий:
ядро просто переписывает source или destination
address в заголовке ip пакета, в отличие от
маскарада оно не держит списка сессий и не
отслеживает его. поэтому трансляция адресов
возможна один-в-один. т.е. если есть 10
компьютеров в локальной сети, которые выходят в
интернет таким образом, то для каждого из них
нужно выделить адрес из зарезервированного для
интернета пула адресов (это то, что выделил
провайдер).
теперь насчет маскарада:
при том варианте, который я нарисовал, маскарад
для адреса 192.168.0.55 работать не будет, по
крайней мере для ядра 2.2. но его можно запустить,
например для определенных протоколов. для этого
нужно просто маркировать соответсвующие входящие пакеты при помощи ipchains и соответственно переделать рутинг под маркированные пакеты.


"А такой вариант как воплотить ??"
Отправлено Walker , 31-Янв-01 21:50 
есть сеть 10.10.10.0,есть 2 канала.
1. с адресом 20.20.20.1
2. с адресом 30.30.30.1
можно сделать так что бы все запросы с сеьт 10.10.10.0 на 40.40.40.1 шли через 20.20.20.1 а
все запросы на 50.50.50.1 шли через 30.30.30.1 ?
Если кто знает подскажите..

"RE: А такой вариант как воплотить ??"
Отправлено Z0termaNN , 01-Фев-01 16:21 
ip rule add prio 100 from 10.10.10.0/24 table 30
ip route add 40.40.40.1 via 20.20.20.1 table 30
ip route add 50.50.50.1 via 30.30.30.1 table 30
ip route add 0/0 throw table 30

"RE: А такой вариант как воплотить ??"
Отправлено Walker , 01-Фев-01 16:37 
Спасибр :)!!!