ThomasXIII Опубликовано 12 ноября, 2009 Жалоба Поделиться Опубликовано 12 ноября, 2009 Задам, пожалуй, второй по популярности вопрос после "Как настроить ВПН под 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. ЧЯДНТ? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sleeping Daemon Опубликовано 12 ноября, 2009 Жалоба Поделиться Опубликовано 12 ноября, 2009 Наверное в руководстве забыли написать: установть на ноуте шлюзом по умолчанию(default gateway) - ip адрес Вашего шлюза. И опять же, смотреть tcpdump-ом на шлюзе, что куда идёт. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ThomasXIII Опубликовано 12 ноября, 2009 Автор Жалоба Поделиться Опубликовано 12 ноября, 2009 На ноуте стоит Винда, и я, если честно, не знаю, какой у нее аналог команды "route add default gw 192.168.222.1". Впрочем, это и неважно, route print говорит, что десктоп является основным шлюзом ("Основной шлюз: 192.168.222.1"). Трассировка ничего не дает, пакеты даже до шлюза не доходят, хотя он пингуется, да. Т.е. я так понимаю, шлюз не просто не пускает дальше в Сеть, а даже блокирует все пакеты еще на подходе. Или я неправ? P.S. Насчет tcpdump можно поподробнее? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sleeping Daemon Опубликовано 12 ноября, 2009 Жалоба Поделиться Опубликовано 12 ноября, 2009 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 в студию. И как пингуется, если пакеты не доходят? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 12 ноября, 2009 Жалоба Поделиться Опубликовано 12 ноября, 2009 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. Цитата: ЧЯДНТ? Только одно - пытаетесь решить задачу не вникая, что такое маршрутизация и натинг. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ThomasXIII Опубликовано 12 ноября, 2009 Автор Жалоба Поделиться Опубликовано 12 ноября, 2009 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 12 ноября, 2009 Жалоба Поделиться Опубликовано 12 ноября, 2009 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 не активирован. Напишире две указанные ранее строки (для открытия форвардинга и для ната) и, по идее, всё должно заработать, если клиент настроен. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 12 ноября, 2009 Жалоба Поделиться Опубликовано 12 ноября, 2009 Дополню. Для доступа со своей локальной сети (с ноутбука) к локальной сети провайдера нужно перед 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ThomasXIII Опубликовано 12 ноября, 2009 Автор Жалоба Поделиться Опубликовано 12 ноября, 2009 Ничего не понимаю... Прописал команды, теперь шлюз и ноут перестали друг друга пинговать. Линк есть - пинга нет. Хотя с утра, точно помню, пинговалось. Уж и кабель переобжимал, и сеть перенастраивал... Мож в таблицу маршрутизации надо что-то добавить? Хотя что, они ж напрямую соединены... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ineu Опубликовано 12 ноября, 2009 Жалоба Поделиться Опубликовано 12 ноября, 2009 Thomas XIII писал(а) Thu, 12 November 2009 22:37 Ничего не понимаю... Прописал команды, теперь шлюз и ноут перестали друг друга пинговать. Линк есть - пинга нет. Хотя с утра, точно помню, пинговалось. Уж и кабель переобжимал, и сеть перенастраивал... Мож в таблицу маршрутизации надо что-то добавить? Хотя что, они ж напрямую соединены... arping, tcpdump Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 13 ноября, 2009 Жалоба Поделиться Опубликовано 13 ноября, 2009 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sleeping Daemon Опубликовано 13 ноября, 2009 Жалоба Поделиться Опубликовано 13 ноября, 2009 Как пакеты попадут в сеть 192.168.222.0/24 ? Через какой интерфейс, или через чего, в таблице рутинга должна быть запись. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 13 ноября, 2009 Жалоба Поделиться Опубликовано 13 ноября, 2009 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 Опубликовано 13 ноября, 2009 Жалоба Поделиться Опубликовано 13 ноября, 2009 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... Тем не менее, у меня, например эти сети показаны в таблицах явно, не в мнемоническом виде. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 13 ноября, 2009 Жалоба Поделиться Опубликовано 13 ноября, 2009 Sleeping Daemon писал(а) Fri, 13 November 2009 15:18 Тем не менее, у меня, например эти сети показаны в таблицах явно, не в мнемоническом виде. либо route -n либо их нет в /etc/networks Честно говоря, в явном виде, действительно, более информативно. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.