Jump to content

Шлюз на Debian


Recommended Posts

Задам, пожалуй, второй по популярности вопрос после "Как настроить ВПН под 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. ЧЯДНТ?

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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 в студию.

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

Link to post
Share on other sites

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.

Цитата:

ЧЯДНТ?

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

Link to post
Share on other sites

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
Link to post
Share on other sites

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 не активирован.

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

Link to post
Share on other sites

Дополню.

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

arping, tcpdump

Link to post
Share on other sites

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

Link to post
Share on other sites

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...

Link to post
Share on other sites

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...

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

Link to post
Share on other sites

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

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

либо route -n

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

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...