31

Благодарю за совет.
Вариант

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.0.132

я пробовал сразу, кажется, сегодня попробовал добавить "-s 192.168.1.129",
завтра проверю ещё раз. ip_forwarding был заранее установлен в 1.
При этом команда

iptables -S nat

пишет, что цепочки нет.
На 1-м никаких фильтров нет, всё разрешено. Не помню, есть ли на нём запись
в /etc/resolv.conf, но она не нужна, т.к. в /etc/network/interfaces указан gateway -
192.168.0.1. Указать его на 2-м нельзя, т.к. нельзя, чтобы 2-й выходил прямо
на него. По условиям задачи, он должен это делать через 1-й.

Пётр.

Пётр.

32

А куда NAT то подевался?

33

afanasev.p пишет:

WS1# echo 1 > /proc/sys/net/ipv4/ip_forwarding

Не .../ip_forwarding - а  .../ip_forward

34

JonnyBekoff пишет:

А куда NAT то подевался?

Команда "iptables -S nat" - неправильная, т.к. nat - не цепочка. POSTROUTING, например, цепочка,
она может быть в nat и в mangle. Вот вывод команды

iptables -t nat -S
-P PREROUTING ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -s 192.168.1.129/32 -o eth0 -j SNAT --to-source 192.168.0.132 

Всё равно на 2-м компьютере 192.168.0.1 пингуется, но выхода в Интернет нет.

Пётр.

Пётр.

35

Скажите, что значит "выхода в Интернет нет"?
Содержимое файла /etc/resolv.conf плс
traceroute -n 8.8.8.8 со второго хоста что показывает?

И баба с воза, и волки сыты...

36

afanasev.p пишет:

Скажите, что значит "выхода в Интернет нет"?
Содержимое файла /etc/resolv.conf плс
traceroute -n 8.8.8.8 со второго хоста что показывает?

resolv.conf на 2-м пустой. traceroute на нём не установлена, попробую установить.
8.8.8.8 с него пингуется и это я обнаружил только сейчас.
"нет выхода в Интернет" - я имел в виду, что не пингуются произвольные сайты,
например, mail.ru, а с 1-го они, конечно, пингуются.

Пётр.

Пётр.

37

Я ошибся, mail.ru пингуется, но по его ip-адресу, а по имени нет.
Т.е. не разрешаются имена.

Пётр.

Пётр.

38

Не видит второй компьютер nameserver, что ж поделать. Можно бы попробовать прописать в named.conf:
listen-on port 53 { any; };
или вместо "any" адресами все интерфейсы.

39

А также:
allow-query { подсеть_1; подсеть_2; localhost; };

40

Благодарю за советы, буду пробовать.
Я запускал named с немного подредактированными настройками, но без этих записей.
Я никогда не настраивал полноценные сети. Лет 10-12 назад настроил named на одном
компьютере для эксперимента, а к нему был подключён только один другой.

Пётр.

Пётр.

41

Вам с самого начала сказали прописать в resolv.conf адрес dns сервера, например публичного гугл 8.8.8.8 или 8.8.4.4 (есть и куча других - OpenDNS, Яндекс.DNS, SkyDNS, OpenNIC DNS, Level3 DNS, Comodo Secure DNS ....), а для того чтобы резолв был с компьютера, который натит, необходимо на нём установить какой-нибудь dns сервер, не обязательно bind, подойдет любой кэширующий - dnsmasq, unbound, pdnsd, powerdns...

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

42

zenon пишет:

Вам с самого начала сказали прописать в resolv.conf адрес dns сервера, например публичного гугл 8.8.8.8 или 8.8.4.4 (есть и куча других - OpenDNS, Яндекс.DNS, SkyDNS, OpenNIC DNS, Level3 DNS, Comodo Secure DNS ....), а для того чтобы резолв был с компьютера, который натит, необходимо на нём установить какой-нибудь dns сервер, не обязательно bind, подойдет любой кэширующий - dnsmasq, unbound, pdnsd, powerdns...

Использовать 8.8.8.8 я не хотел, а bind только начал пробовать.
Честно говоря, я надеялся, что достаточно будет NAT, ведь 1-й перенаправляет пакеты со 2-го на 192.168.0.1,
поэтому, казалось бы, какая разница, с какого компьютера они приходят на хаб, если для него они все выглядят
как пришедшие с 1-го.

Пётр.

Пётр.

43 (04.12.2013 15:17:52 отредактировано Peter)

Пока не помогло, на 2-м можно пинговать только по адресу. Вот /etc/bind/db.root:

db.root
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     192.168.0.1

Вот /etc/bind/named.conf.options:

options {
    directory "/var/cache/bind";

forwarders {
     192.168.0.1;
 };

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
    listen-on port 53 { any; };
    allow-query { 192.168.0.0/24; 192.168.1.0/24; localhost; };
};

Пётр.

Пётр.

44

Вы специально создаете запутанные ситуации?, для проверки знаний? Почему forwarders у вас указывает сам на себя?

45 (04.12.2013 16:29:49 отредактировано Peter)

JonnyBekoff пишет:

Вы специально создаете запутанные ситуации?, для проверки знаний? Почему forwarders у вас указывает сам на себя?

Я уже не помню, что было в этой инструкции в оригнальном файле, но я пробовал закомментировать
именно эту. Сейчас она есть, попробую без неё.
Но почему сам на себя? Она же находится на 1-м компьютере.

Однако сейчас я добился того, что со 2-го интернетовские сайты пингуются по именам.
В named.conf я добавил одну строку перед последней:

//added before include:
masters server { 192.168.0.1; };

include "/etc/bind/named.conf.local";

В named.conf.local у меня и раньше была раскомментирована строка:

//this string was uncommented:
include "/etc/bind/zones.rfc1918";

Ещё раз приведу named.conf.options:

options {
    directory "/var/cache/bind";

forwarders { 192.168.0.1;  };

    auth-nxdomain no;    # conform to RFC1035
    listen-on port 53 { any; };
    allow-query { 192.168.0.0/24; 192.168.1.0/24; localhost; };
    listen-on-v6 { any; };
};

После загрузки системы я ввёл следующие команды, подозреваю, что некоторые из них лишние:

modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp

iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -s 192.168.1.129 -o eth0 -j SNAT --to-source 192.168.0.132
iptables -A INPUT -i eth0 -j ACCEPT 
iptables -A OUTPUT -o eth0 -j ACCEPT 
iptables -A FORWARD -i eth0 -j ACCEPT 

Затем я перезапустил сеть на 2-м и имена стали разрешаться.
Благодарю всех за помощь.

хаб 192.168.0.1 - это устройство в 19''-дюймовой стойке, из которого выходят
20 Ethernet-овских кабелей. Так мне сказал человек, который его видел.

"-s 192.168.1.129" исполняется или игнорируется?

Пётр.

Пётр.

46

Peter пишет:

Использовать 8.8.8.8 я не хотел, а bind только начал пробовать.
Честно говоря, я надеялся, что достаточно будет NAT, ведь 1-й перенаправляет пакеты со 2-го на 192.168.0.1,
поэтому, казалось бы, какая разница, с какого компьютера они приходят на хаб, если для него они все выглядят
как пришедшие с 1-го.

Вы прикалываетесь?
Кто будет обеспечивать доступ к системе доменных имен?

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

47

Ыыыы.... жесть.
Укажите в конфиге второй машины такой же ns, как и на первой. Да, запросы будут уходить к вашему шлюзу. НО! Они будут уходить к нему через первую машину, и будут nat-тится на ней! Для вашего шлюза они будут выглядеть как запросы с первой машины.
Для чего вам держать ns? Чтобы резолвить хосты для одного (десятка) компа? Жгете напалмом.
И да, одного nat-а действительно достаточно. Но если ваш системный резолвер не знает у кого запрашивать dn-ы, то установка локального ns-а - это как из пушки по воробьям.

И баба с воза, и волки сыты...

48

zenon пишет:
Peter пишет:

Использовать 8.8.8.8 я не хотел, а bind только начал пробовать.
Честно говоря, я надеялся, что достаточно будет NAT, ведь 1-й перенаправляет пакеты со 2-го на 192.168.0.1,
поэтому, казалось бы, какая разница, с какого компьютера они приходят на хаб, если для него они все выглядят
как пришедшие с 1-го.

Вы прикалываетесь?
Кто будет обеспечивать доступ к системе доменных имен?

Я же говорил, что в сетях совершенно неопытен, приходилось настраивать сеть только на клиенте.
Действительно, если мой 2-й компьютер не имеет доступа к настоящему dns-серверу, то эту роль
должен брать на себя 1-й, а я думал, что благодаря NAT 1-й будет для 2-го прозрачным.

Пётр.

Пётр.

49

afanasev.p пишет:

Ыыыы.... жесть.
Укажите в конфиге второй машины такой же ns, как и на первой. Да, запросы будут уходить к вашему шлюзу. НО! Они будут уходить к нему через первую машину, и будут nat-тится на ней! Для вашего шлюза они будут выглядеть как запросы с первой машины.
Для чего вам держать ns? Чтобы резолвить хосты для одного (десятка) компа? Жгете напалмом.
И да, одного nat-а действительно достаточно. Но если ваш системный резолвер не знает у кого запрашивать dn-ы, то установка локального ns-а - это как из пушки по воробьям.

Возможно, попробую завтра. Мне это здесь уже советовали.

Пётр.

Пётр.

50

Peter пишет:

Я же говорил, что в сетях совершенно неопытен

Тогда постарайтесь вопрос формулировать более ясно, хотя тут задача, которая обычно возникает только из спортивного интереса.
И перестаньте шлюз обзывать хабом.
Вообще хаб может быть например usb, те разветвитель.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

51

zenon пишет:
Peter пишет:

Я же говорил, что в сетях совершенно неопытен

Тогда постарайтесь вопрос формулировать более ясно, хотя тут задача, которая обычно возникает только из спортивного интереса.
И перестаньте шлюз обзывать хабом.
Вообще хаб может быть например usb, те разветвитель.

Согласен, это шлюз.

Пётр.

Пётр.

52 (05.12.2013 09:30:45 отредактировано Peter)

afanasev.p пишет:

Ыыыы.... жесть.
Укажите в конфиге второй машины такой же ns, как и на первой. Да, запросы будут уходить к вашему шлюзу. НО! Они будут уходить к нему через первую машину, и будут nat-тится на ней! Для вашего шлюза они будут выглядеть как запросы с первой машины.
Для чего вам держать ns? Чтобы резолвить хосты для одного (десятка) компа? Жгете напалмом.
И да, одного nat-а действительно достаточно. Но если ваш системный резолвер не знает у кого запрашивать dn-ы, то установка локального ns-а - это как из пушки по воробьям.

Действительно, на 2-м указал dns-nameservers 192.168.0.1 и теперь разрешение имён выполняется
и без named. Но, если бы за NAT был не один, а 10 или больше компьютеров, не лучше ли было бы
для снижения нагрузки на шлюз держать локальный dns-сервер? Или это несущественно?

Также в команде для включения NAT опция "-s 192.168.1.129" оказалась ненужной, и без неё работает.
Она и не предусмотрена в описании этой команды при использовании SNAT.

Пётр.

Пётр.

53

Peter пишет:

не лучше ли было бы
для снижения нагрузки на шлюз держать локальный dns-сервер? Или это несущественно?

Так обычно и делают, - ставят кэширующий dns сервер, - dnsmasq, unbound, pdnsd, powerdns.... (писал же выше).
Из bind`а тоже можно кэширующий сделать.
Про шлюз почитайте.
Обычно на простые шлюзы ставят dnsmasq (сокращение от dns masquerade), который для работы в режиме кэширования dns запросов не требует никакой настройки - внешним dns сервером для него по-умолчанию будет тот, который прописан в /etc/resolv.conf, ну и 53-udp порт должен быть открыт.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

54

zenon пишет:
Peter пишет:

не лучше ли было бы
для снижения нагрузки на шлюз держать локальный dns-сервер? Или это несущественно?

Так обычно и делают, - ставят кэширующий dns сервер, - dnsmasq, unbound, pdnsd, powerdns.... (писал же выше).
Из bind`а тоже можно кэширующий сделать.
Про шлюз почитайте.
Обычно на простые шлюзы ставят dnsmasq (сокращение от dns masquerade), который для работы в режиме кэширования dns запросов не требует никакой настройки - внешним dns сервером для него по-умолчанию будет тот, который прописан в /etc/resolv.conf, ну и 53-udp порт должен быть открыт.

Благодарю, очень информативная ссылка. dnsmasq на 1-м компьютере не устновлен,
если часто будет требоваться Интернет через 1-й, попробую с ним.

Пётр.

Пётр.

55

Не знаю, почему, но перестало работать разрешение имён на 2-м компьютере.
Снова запустил на 1-м named и указал для 2-го как dns-сервер 1-й - так, конечно, работает.

Пётр.

Пётр.

56

Разрешение имён на 2-м компьютере перестало работать, т.к. я занёс ошибку.
Имя dns-сервера надо указывать в /etc/resolv.conf, а я его там закомментировал,
но оказалось, что в /etc/network/interfaces его задать не удаётся, строка
dns-nameservers <address>
не воспринимается.

Пётр.

Пётр.

57

Peter пишет:

не воспринимается.

Скорее всего потому, что стоит Network Manager.

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

58

Peter пишет:

Имя dns-сервера надо указывать в /etc/resolv.conf, а я его там закомментировал,

Не смутили строчки в начале файл - не редактировать его вручную?
После перезапуска сетевых служб resolv.conf перезаписывается на основе настроек /etc/network/interfaces, либо Network Manager может сделать тоже самое.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

59

XliN пишет:
Peter пишет:

не воспринимается.

Скорее всего потому, что стоит Network Manager.

Он установлен, но не запускается. Также я сегодня подключил 3-й компьютер,
на котором Network Manager не установлен, там тоже dns-nameservers игнорируется.
Но в "man interfaces" и нет инструкций по заданию dns-сервера.

Пётр.

Пётр.