Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Yuriy Al. Shirokov ([info]yushi)
@ 2005-12-27 14:49:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Вопрос: роутинг
Опять глупая проблема с настройкой домашнего компа. Причём непонятно, куда смотреть даже. В специализированных комьюнити боюсь спрашивать — засмеют. Поэтому очередной технический вопрос уважаемым френдам.

Есть: домашняя машина под Linux (ALT Linux Master 2.4, если это актуально). В ней две сетевые карты. Через одну из них машина соединена с ADSL-модемом, который обеспечивает выход в И-нет через PPPoE. Шнур из другой сетевухи втыкается то во второй домашний десктоп, то в ноут (надо, конечно, это всё поразумнее организовать, без перетыкающихся шнурков, я даже коммутатор надыбал, но сначала разобраться бы с тем, что есть; кстати, спасибо всем, кто высказал свои соображения в комментах к этому посту, ноут мы со [info]zmey таки преобрели и пока очень довольны).
Хочется: ходить в И-нет со всех машин домашней локалки.
А не получается!
Что сейчас настроено: eth0 имеет адрес 192.168.1.2, шнурок из неё идёт в модем (192.168.1.1). А eth1 имеет адрес 10.0.0.1, и шнурок из неё, как я уже сказал, перетыкается то в ноутбук (10.0.0.3), то во вторую домашнюю машину (10.0.0.2). Все ip-адреса розданы статически. При подъёме PPPoE-соединения в системе, ясное дело, появляется интерфейс ppp0, смотрящий, собственно, в И-нет.

Таблица маршрутизации на домашнем компьютере при поднятом PPPoE выглядит вот как:

[root@serpent etc]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
83.237.227.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 83.237.227.1 0.0.0.0 UG 0 0 0 ppp0


Строки, касающиеся ppp0, понятно, прописывает звонилка при старте. Когда соединения с Интернетом нет, эти строки из неё исчезают:

[root@serpent etc]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo

Функция маршрутизации в ядре включена:

[root@serpent etc]# cat /etc/sysctl.conf | grep ip_forward
net.ipv4.ip_forward = 1
[root@serpent etc]# cat /proc/sys/net/ipv4/ip_forward
1

Другие машины считают главный домашний десктоп шлюзом по умолчанию. Вот, скажем, какая таблица маршрутизации на ноутбуке:

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0

Что не так-то? Что я ещё не сделал из того, что нужно, чтобы машины из локалки ходили в Сеть? NAT обязательно настраивать? Как?


UPD 27.12.05 16:20 Ага, всё заработало! Друзья, огромное спасибо за советы.

Действительно (кто бы мог подумать?) надо было настроить NAT. После команды

[root@serpent uri]# /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

всё заработало. Теперь мы с Катериной изучим ваши ответы и поймём, как правильно настраивать это дело. =)


(Добавить комментарий)


[info]toshische.livejournal.com
2005-12-27 15:00 (ссылка)
Да, надо NAT. Как? Если я правильно понимаю
man iptables
/nat

(Ответить) (Ветвь дискуссии)


[info]yushi
2005-12-27 16:37 (ссылка)
Ага. Заработало, спасибо.

(Ответить) (Уровень выше)


[info]max_ushakov.livejournal.com
2005-12-27 15:10 (ссылка)
Любят же люди себе устроить :(

Проще будет собрать такую схему: модем переключить в режим раутера, провод от него включить в свитч, остальные компьютеры включить туда же. На компьютерах настроить default gateway на адрес модема, на модеме включить NAT (иногда оно называется dynamic NAPT или ещё как-нибудь). Головную боль такая схема уменьшает не хуже анальгина.

Если же оно так не получится (какой у вас модем, кстати?), то правильно говорит Антон, надо делать NAT на serpent'е. Можно попытаться найти HOWTO для NAT'а, я точно не помню, как оно там должно быть -- только надо найти HOWTO, соответствующий версии ядра, а то у них в 2.0 было одним способом, в 2.2 другим, а в 2.4 третьим :(

А что за лаптоп вы купили в результате?

(Ответить) (Ветвь дискуссии)


[info]yushi
2005-12-27 16:45 (ссылка)
Спасибо. Вообще мы, конечно, хотим сделать так, как ты советуешь, но это ведь надо покупать новые кабели, обжимать их, настраивать модем и т.д. А хотелось сделать всё быстро. =)

какой у вас модем, кстати?

ZTE ZXDSL 831. Прилагался к стримовскому контракту.

А что за лаптоп вы купили в результате?

Fujitsu Siemens Amilo PRO V2030. Пока очень нравится, насколько он надёжен etc. — покажет время. =)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]lvk_
2005-12-27 21:26 (ссылка)
> то ведь надо покупать новые кабели, обжимать их,
Сколько и каких тебе надо? сделаю.

(Ответить) (Уровень выше)


[info]infanticida
2005-12-27 15:13 (ссылка)
Я в /etc/ppp/ip-up.d/ ложил этот скрипт: http://penza.fio.ru/misc/iptables/chunky/include.rcdhcpfirewall.html

В скрипте изменял лишь ип и названия интерфейсов, кажется.

(Ответить) (Ветвь дискуссии)


[info]yushi
2005-12-27 16:47 (ссылка)
Спасибо!

Для того, чтобы всё как-то заработало, достаточно было одной команды оттуда (см. апдейт). Ну и прописать DNS-ы провайдера в resolv.conf на машинах в локалке, конечно.

(Ответить) (Уровень выше)


[info]nit
2005-12-27 15:30 (ссылка)
Вот работающая у меня конфигурация:

По идее, поменяешь WAN_IP на 192.168.1.2 и должно заработать.


#!/bin/sh
#
# nigilist.ru local network configuration (iptables - for modern kernels)
#

WAN_IP=217.172.19.71
#WAN_IP=62.213.87.215

iptables -P OUTPUT DROP

iptables -A INPUT --in-interface lo -j ACCEPT
iptables -A OUTPUT --out-interface lo -j ACCEPT

iptables -A OUTPUT --dst 10.0.0/24 --out-interface eth1 -j ACCEPT
iptables -A OUTPUT --src $WAN_IP --out-interface eth0 -j ACCEPT
iptables -A OUTPUT --src $WAN_IP --out-interface ppp0 -j ACCEPT

# mascarade local network to the big world
iptables -t nat -A POSTROUTING --protocol udp --src 10.0.0/24 -j SNAT --to-source $WAN_IP
iptables -t nat -A POSTROUTING --protocol tcp --src 10.0.0/24 -j SNAT --to-source $WAN_IP
iptables -t nat -A POSTROUTING --protocol icmp --src 10.0.0/24 -j SNAT --to-source $WAN_IP

iptables -A INPUT --src 10.0.0/24 --in-interface eth0 -j DROP
iptables -A INPUT --src 10.0.0/24 --in-interface ppp0 -j DROP

(Ответить) (Ветвь дискуссии)


[info]yushi
2005-12-27 16:49 (ссылка)
Ага, спасибо!

(Ответить) (Уровень выше)


[info]nit
2005-12-27 15:32 (ссылка)
Если все это хозяйство обнулить, то:

root@land:~# cat /etc/rc.d/iptables-off
#!/bin/sh

echo "resetting policies on default chains"
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

echo "flushing default chains"
iptables -t filter --flush
iptables -t nat --flush

echo "zeroing iptables counters"
iptables -Z



Предыдущий файл соотвественно был получен так:
cat /etc/rc.d/iptables-on

(Ответить)


[info]tiphareth
2005-12-27 20:32 (ссылка)
Еще можно поставить на сервере squid для http
и IP-tunnelling для ssh. У меня все так устроено,
все очень удобно, а остальные компутеры к Интернету
вообще не подключаются. Соответственно, можно
об их защите не беспокоиться

(Ответить) (Ветвь дискуссии)


[info]yushi
2005-12-27 23:38 (ссылка)
На самом деле, примерно полгода мы так и жили: в Веб ходили через Privoxy (всё равно она крутится на подключённой к Сети машине в качестве баннерорезалки; да и с TOR, клиентом которого Privoxy умеет быть, я не оставляю надежды разобраться), а остальное пускали на "сервере" через ssh -X.

Но тут у нас появился ноутбук, который куда мощнее глядящей в Сети машины, и стало мучительно жалко неоптимальным образом расходуемых ресурсов. И, потом, надо же было со всем этим разобраться. Что характерно — я понял, что у меня не поднят NAT, пока формулировал вопрос, как оно, в принципе, всегда и бывает.

Хотя по уму всё это полумеры, конечно; правильно пишет [info]max_ushakov@lj, надо переключать модем в режим роутера и подключать всё через свич.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2005-12-29 14:32 (ссылка)
> надо переключать модем в
> режим роутера и подключать всё через
> свич.

Это стремно: нужно на каждом компутере
настраивать брандмауэр и регулярно
просматривать логи.

А сквид много ресурсов не жрет (кроме диска)

Такие дела
Миша

(Ответить) (Уровень выше) (Ветвь дискуссии)

Помогите плиз!
(Анонимно)
2008-05-12 21:35 (ссылка)
Такая ситуация у меня на одном компе два нета что нада прописать игде чстобы они наробатали сразу вместе ????

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Помогите плиз!
[info]yushi
2008-05-12 23:08 (ссылка)
Выражайтесь яснее. Что надо, что есть сейчас, что за ОС (с настройкой виндов вам здесь никто помочь не сможет)?

(Ответить) (Уровень выше)