nixp.ru v3.0

17 октября 2017,
вторник,
01:13:14 MSK

DevOps с компанией «Флант»
Longobard написал 7 января 2004 года в 19:59 (403 просмотра) Ведет себя как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.

Есть задача: дан ноут и комп под Линем, подключенный к Инету. Надо чтобы ноут лез в инет через этот комп. Итак:

В карточку eth0 втыкаю витуху от инета

В eth1 — витуха от ноута

Как мне выполнить задачу? Я пробовал так:

ifconfig eth1 192.168.1.1 netmask 255.255.0.0 up
iptables -A FORWARD -s 192.168.1.0 -j MASQ
echo 1 > /proc/sys/net/ipv4/ip_forward

Такое не работает, хотя поддержка маскарадинга и прочих вкусностей включена монолитом. Дело в том, что iptables не хочет принимать такое правило. Он пишет:

Couldn`t load target 'MASQ: /lib/iptables/libpt_MASQ.so: cannot open shared object file: no such file or directory

Вот так. Обе машины друг друга видят и пингуются. В чем дело ? Может правило не такое ? Или надо как-то через route делать?

Genie

Оторвать бы тебе чего-нить за такое неправильное правило с точки зрения безопасности :D

Давай сюда вывод iptables-save, а там уж и думать будем.

Еще есть такая полезная штука как iptraf, помогает очень сильно при диагностике таких настраиваний.

К тому же вопрос тебе для самообразования и размышления: в какую таблицу будет пытаться писать iptables приведенное тобой правило?

Да-да. В filter!!

А надо? Надо — в nat!

Итого, правильное правило (с учетом сааамого верхнего):

iptables -t nat -A FORWARD -i eth1 -s 192.168.1.0/24 -o eth0 -j MASQ

iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -s 192.168.1.0/24 -o eth0 -j ACCEPT

man iptables!! До просветления!

Как разрешить активный и пассивный фтп — это другая история.

Longobard

Прописал такое правило:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.1.0/24 -o ethx -j SNAT --to-source 192.168.1.1

Теперь такая трабла: с 192.168.1.0 инет есть. Но тока если писать сразу IP адрес. То есть глючит ДНС.

На машине 192.168.1.1 ДНС прописан такой: 80.70.224.2

Прописываю такой же на 192.168.1.0, но ДНС не работает. В чем лажа?

Longobard

Может замутить на 192.168.1.1 ДНС??

Genie

Тьфу, и точно POSTROUTING цепочка :)

А ты чего, ноуту адрес 192.168.1.0 дал? Поменяй-ка на другое, 192.168.1.2, что ли.. А то, бывает, пучит их немного с таких адресочков…

Второе, что приходит в голову, это что не может что-то работать, а что-то — нет.

чего с ноута скажет `dig any nixp.ru @80.70.224.2`? Или `nslookup nixp.ru 80.70.224.2`?

Longobard

Да я и не давал в принципе ноуту ничего. Я написал ifconfig eth1 192.168.1.1 up netmask 255.255.0.0 и ноут получил IP 192.168.1.0

Как мне дать ему адрес 192.168.1.2 ???

Genie

ifconfig eth0 192.168.1.2 netmask 255.255.0.0 ….

man ifconfig :)

Longobard

не работает

fly4life

ifconfig eth0 inet 192.168.1.2 netmask 255.255.0.0

Longobard

да эта карточка то работает (т.е. выход в инет через eth0с 192.168.1.1 есть)

тут еще одна весч: замусорены таблицы route:

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.1.0 * 255.255.255.0 U 0 0 0 eth1

10.1.0.0 * 255.255.0.0 U 0 0 0 eth0

127.0.0.0 * 255.0.0.0 U 0 0 0 lo

default smin-gw.mns.ru 0.0.0.0 UG 0 0 0 eth0

Как очистить таблицу route ? Я читал маны, пробовал командой del,нифига не получается. Может в этом дело?

Genie

route del default gw smin-gw.mns.ru

route add default gw 192.168.1.1

или одной командой

route change default gw 192.168.1.1

Что-то типа этого, man route!

А вообще, по ходу у тебя ноут взял из dhcp, раз говоришь воткнул, включил и он такой адрес получил. — Менять, по илее, лучше там.

Так. Стоп.. Это же на шлюзе? Так на шлюзе и не надо из этого ничего менять…

Смотри на ноуте.. :)

Longobard

Да поменял я уже айпишники, просто голову клинило тогда :) Не, dhcp я не юзал. Просто поменял IP на ноуте. И маску поставил везде 255.255.255.0 Насчет route я понял — надо дать route те же команды что я ему давал через add, но тока вместо add написать del :)

Так что делаю cat .bash_history | grep route :) Короче с утра голова заварила хорошо.

Так что тьеперь почищу все рулесы в iptables/route и загоню в iptables одно правило :)

Longobard

Блин, какая же тупая была ошибка! Похоже что у меня вечером

brain.intellegence() == ass.intellegence()

:)

Короче я сначала ведь делал такое правило

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.1.0/24 -j SNAT --to-source 192.168.1.1

т.е говоря по русски сорс-адрес машин из подсетки менялся на ВНУТРЕСЕТЕВОЙ адрес шлюза. Вот в этом то и ошибка. А меняцца он должне на ВНЕШНИЙ адрес шлюза. Короче правило должно быть таким:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.1.0/24 -j SNAT --to-source 10.1.7.90

Вот и все. И все заработало. Вывод: садясь делать такие вещи убедитесь в нужной консистенции своих мозгов. А то я сидел вчера вечером до 23 часов и только хуже сделал, а с утра за полчаса все сделал нормально.

P.S.: Шуруп, можешь закрывать тему.

Genie

Хватит и этого..

iptables -t nat -A POSTROUTING -i eth1 -o eth0 -s 192.168.1.0/24 -d ! 192.168.1.0/24 -j MASQ

Longobard

Ты читал ман? В цепочке пострутинга не проходит ключик -i :) Я тоже сначала так попробовал.

Longobard

Короче все, ТЕМА ЗАКРЫТА! ЗАКРЫТА!