Перейти к содержанию

Шлюз на Debian


Рекомендуемые сообщения

Задам, пожалуй, второй по популярности вопрос после "Как настроить ВПН под Linux?": как правильно настроить шлюз?

Постановка задачи.

Есть десктоп, который будет выполнять роль шлюза для ноутбука и, что логично, ноутбук. В десктопе две сетевые карты: eth0 соединена с ноутом кроссом, eth1 подключена к провайдеру. Выход в Интернет с десктопа осуществляется путем подключения ВПН ppp0. Необходимо настроить десктоп так, чтобы с ноута через него была возможность выйти в Сеть.

Параметры eth0:

IP 192.168.222.1

Маска 255.255.255.0

Шлюз не указан (ну можно самого себя в качестве шлюза указать, толку никакого)

Параметры eth1:

IP 192.168.51.24

Маска 255.255.255.0

Шлюз 192.168.51.1

DNS сервера провайдера: 10.10.10.10 и 10.2.2.2

Настройки сети на ноутбуке

IP 192.168.222.2

Маска 255.255.255.0

Шлюз 192.168.222.1

DNS указаны провайдерские.

Как решал.

Просмотрев первые пять страниц Гугла по запросу "шлюз Linux", пришел к выводу, что, теоретически, решается эта проблема следующим образом (по крайней мере, это предлагается в качестве решения на подавляющем большинстве форумов):

echo 1 > /proc/sys/net/ipv4/ip_forwardiptables -t net -Fiptables -t nat -A POSTROUTING -o eth1 -s 192.168.222.1/24 -j MASQUERADEiptables -F FORWARD

с некоторыми незначительными вариациями. Но у меня ни один из предложенных вариантов так и не заработал. Ноут шлюз пингует, а вот дальше никак. Ни ресурсы провайдера, ни внешние ресурсы по IP. ЧЯДНТ?

Ссылка на комментарий
Поделиться на другие сайты

Наверное в руководстве забыли написать: установть на ноуте шлюзом по умолчанию(default gateway) - ip адрес Вашего шлюза.

И опять же, смотреть tcpdump-ом на шлюзе, что куда идёт.

Ссылка на комментарий
Поделиться на другие сайты

На ноуте стоит Винда, и я, если честно, не знаю, какой у нее аналог команды "route add default gw 192.168.222.1". Впрочем, это и неважно, route print говорит, что десктоп является основным шлюзом ("Основной шлюз: 192.168.222.1"). Трассировка ничего не дает, пакеты даже до шлюза не доходят, хотя он пингуется, да. Т.е. я так понимаю, шлюз не просто не пускает дальше в Сеть, а даже блокирует все пакеты еще на подходе. Или я неправ?

P.S. Насчет tcpdump можно поподробнее?

Ссылка на комментарий
Поделиться на другие сайты

Thomas XIII писал(а) Thu, 12 November 2009 14:30

На ноуте стоит Винда, и я, если честно, не знаю, какой у нее аналог команды "route add default gw 192.168.222.1". Впрочем, это и неважно, route print говорит, что десктоп является основным шлюзом ("Основной шлюз: 192.168.222.1"). Трассировка ничего не дает, пакеты даже до шлюза не доходят, хотя он пингуется, да. Т.е. я так понимаю, шлюз не просто не пускает дальше в Сеть, а даже блокирует все пакеты еще на подходе. Или я неправ?

P.S. Насчет tcpdump можно поподробнее?

iptales -L в студию.

И как пингуется, если пакеты не доходят?

Ссылка на комментарий
Поделиться на другие сайты

Thomas XIII писал(а) Thu, 12 November 2009 11:09

Задам, пожалуй, второй по популярности вопрос после "Как настроить ВПН под Linux?": как правильно настроить шлюз?

Вот и удивительно, что не решив такую "разжеванную" задачу, Вы ещё не привели вывод ключевых настроек.

1) ifconfig

2) route

3) iptables-save

причем при поднятом ppp.

Ведь важно бошьше не то, как Вы настраивали, а то, как система восприняла эти настройки.

Тем не менее, допущенных Вами ошибок более чем достаточно, чтобы роутинг и нат не работали.

Цитата:

Шлюз 192.168.51.1

Это зачем. Шлюз по умолчанию, если я правильно понял конфигурацию, должен быть доступен через ppp0

Если Вы добавили вышеуказаннй шлюз для доступа к рессурсам локальной сери провайдера, то эта задача решается по другому - добавление нужных маршрутов.

Впрочем, это скорее кривость, чем ошибка.

Цитата:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t net -F

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.222.1/24 -j MASQUERADE

iptables -F FORWARD

При POLICY ACCEPT достаточно

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.222.0/24 -j MASQUERADE

это для инета, а для лок ресурсов - зависит от сети провайдера.

Маскарадим, конечно, после поднятия vpn.

Цитата:

ЧЯДНТ?

Только одно - пытаетесь решить задачу не вникая, что такое маршрутизация и натинг.

Ссылка на комментарий
Поделиться на другие сайты

gogi писал(а) Thu, 12 November 2009 17:21

Это зачем. Шлюз по умолчанию, если я правильно понял конфигурацию, должен быть доступен через ppp0

Это затем, что таковы настройки сети по умолчанию. При поднятом ВПН шлюзом по умолчанию становится, естественно 10.100.100.2 (ВПН-сервера провайдера)

Ключевые настройки? Извольте:

tomas13:/home/thomasxiii# ifconfigeth0      Link encap:Ethernet  HWaddr 00:e0:51:5b:00:0c            inet addr:192.168.222.1  Bcast:192.168.222.255  Mask:255.255.255.0          UP BROADCAST MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:0 (0.0   TX bytes:0 (0.0           Interrupt:19 Base address:0xe800 eth1      Link encap:Ethernet  HWaddr 00:1b:fc:32:0d:f5            inet addr:192.168.51.24  Bcast:192.168.51.255  Mask:255.255.255.0          inet6 addr: fe80::21b:fcff:fe32:df5/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:3737 errors:0 dropped:0 overruns:0 frame:0          TX packets:2506 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:1706417 (1.6 MiB)  TX bytes:392485 (383.2 KiB)          Interrupt:220 Base address:0xa000 lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0          inet6 addr: ::1/128 Scope:Host          UP LOOPBACK RUNNING  MTU:16436  Metric:1          RX packets:12 errors:0 dropped:0 overruns:0 frame:0          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:800 (800.0   TX bytes:800 (800.0 B)ppp0      Link encap:Point-to-Point Protocol            inet addr:94.158.210.36  P-t-P:10.100.100.2  Mask:255.255.255.255          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1          RX packets:1730 errors:0 dropped:0 overruns:0 frame:0          TX packets:1752 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:3           RX bytes:1460552 (1.3 MiB)  TX bytes:230985 (225.5 KiB)

tomas13:/home/thomasxiii# routeKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.51.0    *               255.255.255.0   U     0      0        0 eth1localnet        *               255.255.255.0   U     0      0        0 eth0192.168.0.0     192.168.51.1    255.255.0.0     UG    0      0        0 eth110.0.0.0        192.168.51.1    255.0.0.0       UG    0      0        0 eth1default         10.100.100.2    0.0.0.0         UG    0      0        0 ppp0

Предпоследние два маршрута добавлены, чтобы заходить на локальные ресурсы напрямую через шлюз 51.1 а не 10.100.100.2, в противном случае скорость соединения будет как со внехой.

tomas13:/home/thomasxiii# iptables-saveiptables-save v1.4.2: Unable to open /proc/net/ip_tables_names: No such file or directory
Ссылка на комментарий
Поделиться на другие сайты

Thomas XIII писал(а) Thu, 12 November 2009 20:24

Ключевые настройки? Извольте:

tomas13:/home/thomasxiii# ifconfigeth0      Link encap:Ethernet  HWaddr 00:e0:51:5b:00:0c            inet addr:192.168.222.1  Bcast:192.168.222.255  Mask:255.255.255.0          UP BROADCAST MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:0 (0.0   TX bytes:0 (0.0           Interrupt:19 Base address:0xe800 eth1      Link encap:Ethernet  HWaddr 00:1b:fc:32:0d:f5            inet addr:192.168.51.24  Bcast:192.168.51.255  Mask:255.255.255.0          inet6 addr: fe80::21b:fcff:fe32:df5/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:3737 errors:0 dropped:0 overruns:0 frame:0          TX packets:2506 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:1706417 (1.6 MiB)  TX bytes:392485 (383.2 KiB)          Interrupt:220 Base address:0xa000 lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0          inet6 addr: ::1/128 Scope:Host          UP LOOPBACK RUNNING  MTU:16436  Metric:1          RX packets:12 errors:0 dropped:0 overruns:0 frame:0          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:800 (800.0   TX bytes:800 (800.0 B)ppp0      Link encap:Point-to-Point Protocol            inet addr:94.158.210.36  P-t-P:10.100.100.2  Mask:255.255.255.255          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1          RX packets:1730 errors:0 dropped:0 overruns:0 frame:0          TX packets:1752 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:3           RX bytes:1460552 (1.3 MiB)  TX bytes:230985 (225.5 KiB)

tomas13:/home/thomasxiii# routeKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.51.0    *               255.255.255.0   U     0      0        0 eth1localnet        *               255.255.255.0   U     0      0        0 eth0192.168.0.0     192.168.51.1    255.255.0.0     UG    0      0        0 eth110.0.0.0        192.168.51.1    255.0.0.0       UG    0      0        0 eth1default         10.100.100.2    0.0.0.0         UG    0      0        0 ppp0

Всё верно

Цитата:

tomas13:/home/thomasxiii# iptables-saveiptables-save v1.4.2: Unable to open /proc/net/ip_tables_names: No such file or directory

Это потому, что iptables не активирован.

Напишире две указанные ранее строки (для открытия форвардинга и для ната) и, по идее, всё должно заработать, если клиент настроен.

Ссылка на комментарий
Поделиться на другие сайты

Дополню.

Для доступа со своей локальной сети (с ноутбука) к локальной сети провайдера нужно перед

iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.222.0/24 -j MASQUERADE

добавить ещё две строки

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.222.0/24 -d 10.0.0.0/8 -j SNAT --to-source 192.168.51.24

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.222.0/24 -d 192.168.0.0/16 -j SNAT --to-source 192.168.51.24

Ссылка на комментарий
Поделиться на другие сайты

Ничего не понимаю... Прописал команды, теперь шлюз и ноут перестали друг друга пинговать. Линк есть - пинга нет. Хотя с утра, точно помню, пинговалось. Уж и кабель переобжимал, и сеть перенастраивал... Мож в таблицу маршрутизации надо что-то добавить? Хотя что, они ж напрямую соединены...

Ссылка на комментарий
Поделиться на другие сайты

Thomas XIII писал(а) Thu, 12 November 2009 22:37

Ничего не понимаю... Прописал команды, теперь шлюз и ноут перестали друг друга пинговать. Линк есть - пинга нет. Хотя с утра, точно помню, пинговалось. Уж и кабель переобжимал, и сеть перенастраивал... Мож в таблицу маршрутизации надо что-то добавить? Хотя что, они ж напрямую соединены...

arping, tcpdump

Ссылка на комментарий
Поделиться на другие сайты

Thomas XIII писал(а) Thu, 12 November 2009 23:37

Ничего не понимаю... Прописал команды, теперь шлюз и ноут перестали друг друга пинговать. Линк есть - пинга нет. Хотя с утра, точно помню, пинговалось. Уж и кабель переобжимал, и сеть перенастраивал... Мож в таблицу маршрутизации надо что-то добавить? Хотя что, они ж напрямую соединены...

Нелегко быть телепатом, но могу предположить следующее.

1. На xp по умолчанию фаревол не пропускает пинги, поэтому пинг в сторону ноута может блокироваться. Пингуйте комп с ноута.

2. Очистите фаревол и проверьте пинг.

iptables -F

iptables -t nat -F

3. Если пинги пошли, добавьте в фаревол одно правилло

iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.222.0/24 -j MASQUERADE

и проверьте пинги в инет.

4. Теперь добавляйте (если нужно) правила для локальной сети провайдера.

iptables -t nat -I POSTROUTING -o eth1 -s 192.168.222.0/24 -d 10.0.0.0/8 -j SNAT --to-source 192.168.51.24

iptables -t nat -I POSTROUTING -o eth1 -s 192.168.222.0/24 -d 192.168.0.0/16 -j SNAT --to-source 192.168.51.24

Заметьте, что ключ стал -I - вставить правило впереди, а также то, что в прошлый раз я неправильно указал выходной интерфейс - у Вас он eth1. Думаю, Вы сами исправили эту опечатку.

5. Если всё работает, напишите скрипт, состоящий из открытия форвардинга и пяти выше указанных правил, включая правила очищения таблиц. Сделайте этот скрипт запускаемым при загрузке. Детали зависят от дистрибутива.

5a. Форвардинг можно открыть и другим способом - раскомментиравать в файле переменных ядра /etc/sysctl.conf строку

net.ipv4.ip_forward=1

Ссылка на комментарий
Поделиться на другие сайты

Как пакеты попадут в сеть 192.168.222.0/24 ?

Через какой интерфейс, или через чего, в таблице рутинга должна быть запись.

Ссылка на комментарий
Поделиться на другие сайты

Sleeping Daemon писал(а) Fri, 13 November 2009 13:10

Как пакеты попадут в сеть 192.168.222.0/24 ?

Через какой интерфейс, или через чего, в таблице рутинга должна быть запись.

Это у него, вроде бы было в таблице.

localnet        *               255.255.255.0   U     0      0        0 eth0

Сеть localnet обычно описывается в /etc/networks, как и сети default, loopback...

Ссылка на комментарий
Поделиться на другие сайты

gogi писал(а) Fri, 13 November 2009 16:49

Sleeping Daemon писал(а) Fri, 13 November 2009 13:10

Как пакеты попадут в сеть 192.168.222.0/24 ?

Через какой интерфейс, или через чего, в таблице рутинга должна быть запись.

Это у него, вроде бы было в таблице.

localnet        *               255.255.255.0   U     0      0        0 eth0

Сеть localnet обычно описывается в /etc/networks, как и сети default, loopback...

Тем не менее, у меня, например эти сети показаны в таблицах явно, не в мнемоническом виде.

Ссылка на комментарий
Поделиться на другие сайты

Sleeping Daemon писал(а) Fri, 13 November 2009 15:18

Тем не менее, у меня, например эти сети показаны в таблицах явно, не в мнемоническом виде.

либо route -n

либо их нет в /etc/networks

Честно говоря, в явном виде, действительно, более информативно. Smile

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...