LINUX.ORG.RU
ФорумAdmin

[SNAT] Раздача инета

 


0

0

Привет ЛОР, в очередной раз. Суть проблемы в том что не могу могу отдать инет на Windows машину. Сети до ужаса проста. Есть Сетевуха eth0 воткнутая в Linux так сказать сервер с адресом 192.168.1.2. Есть ADSL модем с адресом 192.168.1.1 настроенный как Bridge. Есть интерфейс ppp0 со статикой 212.ххх.ххх.ххх прова который поднимается при DSL подключении на той же сетевухе. И Windows машина с адресом 192.168.1.3.Требуется что бы на обоих машинах был инет. На Windows машине через NAT. Прописываю правило # iptables -t nat -A POSTROUTING -o ppp0 -p tcp -j SNAT --to-source 192.168.1.3 - инет пропадает на Linux машине и на виндовс машине не появляется. Что самое интересное default gateway на Linux машине приходится прописывать ip ppp0 тоесть 212.ххх.ххх.ххх - по другому инет на ней не появляется. Ведь как я понимаю шлюзом должен быть DSL модем с адресом 192.168.1.1? Все работает только в конфигурации default gw 212.xxx.xxx.xxx и iptables -A POSTROUTING -o ppp0 -j MASQUERADE , но ведь это не Ъ. Почему приходится прописывать как шлюз внешнюю статику? И почему пропадает инет на линукс машине при SNAT? P.S. цепочка FORWARD - ACCEPT. Ну и собственно как дойти до той пресловутой кнопки сделать заебись?

route -n

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface

212.220.107.255 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0

192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

0.0.0.0 212.xxx.xxx.xxx 0.0.0.0 UG 0 0 0 ppp0

0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0

★★★

Последнее исправление: partyzan (всего исправлений: 2)

Если SNAT, то никак не чей-то интерфейс. Должен быть реальный локальный, то есть "-j SNAT --to-source 212.ххх.ххх.ххх". "-p tcp" - а что, udp натить не надо ?

default gw 212.xxx.xxx.xxx


только так, а не иначе. Ещё, правда, можно просто в ppp0, без указания IP (но роутить в интерфейс можно только для интерфейсов точка-точка).

iptables -A POSTROUTING -o ppp0 -j MASQUERADE , но ведь это не Ъ.


Кто сказал, что не «Ъ» ? :-)

AS ★★★★★
()
Ответ на: комментарий от AS

Как я понял MASQUERADE нагружет систему ведь на сетевуху на которую надо натить имеет статику и поэтому лучiе SNAT

partyzan ★★★
() автор топика
Ответ на: комментарий от AS

> default gw 212.xxx.xxx.xxx

только так, а не иначе. Ещё, правда, можно просто в ppp0, без указания IP (но роутить в интерфейс можно только для интерфейсов точка-точка).

Я ято то плохо понимаю, а если бы у меня была динамика с IP который меняется раз в сутки. Мне бы пришлось кажые 24 часа менять дефолтный гетвей? Это ЩИТ полный же.

partyzan ★★★
() автор топика

>Я ято то плохо понимаю, а если бы у меня была динамика с IP который меняется раз в сутки. Мне бы пришлось кажые 24 часа менять дефолтный гетвей?

ip route add default dev ppp0

Прописываю правило # iptables -t nat -A POSTROUTING -o ppp0 -p tcp -j SNAT --to-source 192.168.1.3


fail. Может стоит man iptables?

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

ppp0 итак обычно гетвеем по дефолту стоит

gateway=«default gw 212.ххх.ххх.ххх» ROUTES=(gateway)

partyzan ★★★
() автор топика
Ответ на: комментарий от redgremlin

ip route add default dev ppp0

Прописываю правило # iptables -t nat -A POSTROUTING -o ppp0 -p tcp -j SNAT --to-source 192.168.1.3

Как я понял из мана --to-source это тот чьи пакеты надо транслировать (изменять с локального адреса на ip 212.xxx.xxx.xxx)

partyzan ★★★
() автор топика

Какой дистрибутив? Как поднимается pppoe-соединение? Все маршруты должны прописываться автоматом. Если debian, то http://wiki.debian.org/PPPoE

Если статика, желательно, конечно, SNAT:

sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j SNAT --to 212.ххх.ххх.ххх

anton_jugatsu ★★★★
()
Ответ на: комментарий от anton_jugatsu

Нет, dedian base давно не использую. Дистр - Arch. Поднимается /etc/rc.d/adsl start (pppoe-start)

Маршруты прописываются, но инет на Windows машине только через MASQUERADE работает почему то

partyzan ★★★
() автор топика
Ответ на: комментарий от partyzan

> Как я понял MASQUERADE нагружет систему

Дальше фразу не понял. :-)

Что касается нагрузки, говорят, что да, нагружает сильнее. На практике я это просто не вижу, видимо сильно маленькое различие. А IP динамический ? Если да, с SNAT придётся правило переопределять каждый раз.

AS ★★★★★
()
Ответ на: комментарий от anton_jugatsu

Спасибо добр человек. после

-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j SNAT --to-source 212.ххх.ххх.ххх все завелось.

Теперь дело за меньшим.

Почему я такой тупой и понял то что написано в мане совсем по другому.

Кстати ключ -s что означает?

Теперь пойду раскуривать с рабочим вариантом как оно работает а то до меня еще не совсем дошо почему именнно так а не иначе.

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

partyzan ★★★
() автор топика
Ответ на: комментарий от partyzan

> а если бы у меня была динамика с IP который меняется раз в сутки. Мне бы пришлось кажые 24 часа менять дефолтный гетвей ?

Да, конечно. Но стоит помнить, что pppd обучен менять default gw при задании соответствующих параметров. А модем, если он бридж, что он с L3 пакетом делать-то будет ? Ну, получит. И что ?

AS ★★★★★
()
Ответ на: комментарий от partyzan

> на всех интерфейсах включая ppp0 статика прописана

То есть, на ppp0 IP всегда один ? Ну, тогда можно и SNAT...

AS ★★★★★
()
Ответ на: комментарий от anton_jugatsu

С каждым днем начинаешь любить ЛОР все больше, куча троллей конечно, но в реальной ситуации по решению конкретной задачи всегда смогут помочь.

partyzan ★★★
() автор топика
Ответ на: комментарий от partyzan

> Кстати ключ -s что означает?

Соответствие SRC IP. Одно из условий, которому должен удовлетворять пакет. То есть, пакеты с хостов этой (192.168.1.0/24) сети.

AS ★★★★★
()
Ответ на: комментарий от AS

Поэтому и спрашивал про SNAT,так как где то читал что MASQERADE лишнняя нагрузка для системы при использовании статики.

partyzan ★★★
() автор топика
Ответ на: комментарий от partyzan

> так как где то читал что MASQERADE лишнняя нагрузка для системы при использовании статики.

Акцент, видимо, не так поставлен. MASQERADE работает в любом случае, SNAT - в частном. В случае наступления этого частного случая в виде статики, в общем-то, можно использовать более простой в обработке SNAT. Но, как я уже написал ранее, что-то я сильного выигрыша не видел никогда, на фоне всего остального просто не видно.

AS ★★★★★
()

Кстати,

# ls ip_nat_*
ip_nat_amanda.ko ip_nat_h323.ko ip_nat_pptp.ko ip_nat_snmp_basic.ko
ip_nat_ftp.ko ip_nat_irc.ko ip_nat_sip.ko ip_nat_tftp.ko

# ls ip_conntrack*
ip_conntrack_amanda.ko ip_conntrack_irc.ko ip_conntrack_netlink.ko ip_conntrack_sip.ko
ip_conntrack_ftp.ko ip_conntrack.ko ip_conntrack_pptp.ko ip_conntrack_tftp.ko
ip_conntrack_h323.ko ip_conntrack_netbios_ns.ko ip_conntrack_proto_sctp.ko

В общем-то, это в зависимости от того, как ядро собрано, в конкретных случаях может и различаться (что-то может отсутствовать, что-то может быть в основной бинарник ядра вкомпилировано), но иметь представление о наличии этого надо. И зачем оно - тоже знать стоит.

AS ★★★★★
()
Ответ на: комментарий от AS

[kernel@arch ~]$ sudo ls -a /lib/modules/2.6.30.10-PPPoE-NAT/kernel/net/ipv4/netfilter

. iptable_filter.ko ip_tables.ko    ipt_NETMAP.ko

ipt_REJECT.ko    nf_defrag_ipv4.ko

.. iptable_nat.ko ipt_MASQUERADE.ko ipt_REDIRECT.ko

nf_conntrack_ipv4.ko nf_nat.ko

[kernel@arch ~]$ sudo ls -a /lib/modules/2.6.30.10-PPPoE-NAT/kernel/net/netfilter . .. nf_conntrack.ko   x_tables.ko xt_tcpudp.ko

partyzan ★★★
() автор топика
Ответ на: комментарий от partyzan

Там оно, по большей части, само подгружается. А вот ip_nat_* надо руками подгружать, какие надо. Некоторые ip_conntrack* сами подгрузятся, некоторые надо тоже подгружать, если они нужны.

AS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.