LinuxForum.Fans
Тема

вторичный шлюз

Автор: Peter 59 сообщений 7545 просмотров
#352046

kisil написал:
ТС сделайте так
[quote="Kettler"]Нарисуйте схему чётко и подробно, тогда можно будет подумать а так как гадание на кофейной гуще.
[/quote]
Так я ему уже отвечал. В моём 1-м сообщении есть ошибка. Ещё раз:
сеть 192.168.0.0, хаб 192.168.0.1, 1-й компьютер - 192.168.0.132,
2-й - 192.168.0.129, все три включены в свич. На 1-м один интерфейс - eth0.
Для 1-го хаб указан как gateway и dns-nameserver.
1-й имеет выход в Интернет через хаб.
Требуется дать выход в Интернет 2-му через 1-й.
Можно ли это сделать, когда они в одной сети?
Если надо разбивать сеть на две подсети, то на 1-м надо будет запускать и NAT и named?

В типичном случае, когда на компьютере два сетевых интерфейса, через один
выход в Интернет, на другом - локальная сеть, то достаточно NAT, без named?

Пётр.
#352049

А что мешает пустить 2-й комп через тот хаб что и 1-й.?

#352051
"Peter" написал:
1-й имеет выход в Интернет через хаб.

Мне интересно что вы имеете под пониманием слова хаб?
Правильное понимание - сетевой концентратор, коим на замену пришли коммутаторы.

#352058
zenon написал:
[quote="Peter"]1-й имеет выход в Интернет через хаб.

Мне интересно что вы имеете под пониманием слова хаб?
Правильное понимание - сетевой концентратор, коим на замену пришли коммутаторы.[/quote]
Я лично ничего не имею в виду, просто я слышал, что его так называют.
Я не знаю, что он из себя представляет, думаю, что это router.

Пётр.

#352059
kisil написал:
А что мешает пустить 2-й комп через тот хаб что и 1-й.?

Я выше говорил - где-то дальше проверка по MAC-адресу, а нужно на короткое время.

Пётр.

#352600

Я продолжил попытки, но пока безуспешно и надеюсь, что мне здесь помогут.
В другом месте говорят, что на BSD вобще достаточно одной команды ipfw,
чтобы завернуть поток куда надо и даже её привели.
Напомню, что два компьютера включены в свич и в свич также входит кабель от хаба.
Адрес хаба - 192.168.0.1,, 1-й компьютер имеет адрес 192.168.0.132 и выходит в Инернет
через хаб. Надо дать выход в Интернет 2-му компьютеру через 1-й.

Вот /etc/network/interfaces на 2-м:

text

auto lo loopback

auto eth0 iface eth0 inet static address 192.168.1.129 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.132

Вот /etc/network/interfaces на 1-м:

text

auto lo
iface lo inet loopback

auto eth0 iface eth0 inet static address 192.168.0.132 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 dns-nameservers 192.168.0.1 gateway 192.168.0.1

auto eth0:0 iface eth0:0 inet static address 192.168.1.132 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255

Т.е. 1-й имеет также адрес 192.168.1.132, а адрес 2-го - 192.168.1.129.

Вот вывод команды "route -n" на 1-м:

text

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

Вот какие команды я ввожу на 1-м после загрузки:

text

modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.0.132

На 2-м пингуется и 1-й и хаб, но Интернета нет.
Я пробовал также, не знаю, имеет ли это смысл, перед iptables вставлять две команды

text

route del -net 192.168.1.0 netmask 255.255.255.0 gw 0.0.0.0 dev eth0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.132 dev eth0

они выполнились, но это не помогло.

Просьба сказать, что ещё надо сделать для получения желаемого.

Пётр.

#352611

Поставить вторую сетевуху, и не мучаться с алиасами.

#352644

Говорят же, что и на одном можно это сделать. Если там было два интрефейса, я бы и не спрашивал.

Пётр.

#352646

Помню тоже пытался такое извращение сделать, и тоже не получилось. Плюнул.

#352699

Исходя из той схемы, которую я понял (по смутному описанию):
Есть 2 рабочие станции и 1 шлюз. Настройки рабочих станций:
WS1:
eth0: 192.168.0.132/24
eth0:0: 192.168.1.132/24
gw: 192.168.0.1

WS2:
eth0: 192.168.1.129/24
gw: 192.168.1.132

Router:
ethX: 192.168.0.1/[24|23|...]

При этом на WS1 доступ к интернету есть (т.е. есть пинг на ya.ru либо 8.8.8.8, к примеру), а на WS2 доступа к интернету нет.
Задача - пропустить WS2 в интернет через WS1

На WS1:
[console]
WS1# # В следующей команде нужно выбрать один из вариантов завершения - либо с SNAT, либо с MASQURADE. При низких нагрузках и статических адресах разницы нет
WS1# iptables -t nat -A POSTROUTING -s 192.168.1.129 -o eth0 [ -j SNAT --to-source 192.168.0.132 | -j MASQUERADE ]
WS1# echo 1 > /proc/sys/net/ipv4/ip_forwarding
[/console]

После выполнения команд доступ с WS2 в интернет должен появится (т.е. `ping 8.8.8.8` должен отработать без ошибки). Если при этом узлы интернета не будут доступны по доменным именам, то нужно привести состояние WS2:/etc/resolv.conf в соответствие с содержимым WS1:/etc/resolv.conf

ЗЫ: Не учитывал возможные фильтры на WS1 (iptables -nvL FILTER --line-numbers)

#352742

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

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

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

text
iptables -S nat

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

Пётр.

#352801

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

#352803
"afanasev.p" написал:
WS1# echo 1 > /proc/sys/net/ipv4/ip_forwarding

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

#352807
JonnyBekoff написал:
А куда NAT то подевался?

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

text
iptables -t nat -S
text

-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 пингуется, но выхода в Интернет нет.

Пётр.

#352812

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

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

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

Пётр.

#352817

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

Пётр.

#352823

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

#352824

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

#352826

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

Пётр.

Войдите или зарегистрируйтесь, чтобы ответить.