Ubuntu + "connection sharing"

11 отговора 0 прегледа
#1

Ubuntu + "connection sharing"

Здравейте,

нов съм с линукса, но имам желание да се уча. Имам обаче един проблем. Използвам Ubuntu 7.04, като имам интернет по пппое на eth0, и искам до го пусна през мойто ПЦ и на друг компютър (eth1). Всичко е ОК - аз имам интернет, имам пинг към другото ПЦ, то към мен също. Но в момента щом изпълня:
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
и моя интернет спира, а и на др ПЦ няма нет. Моля за малко помощ! Трябва ли да се каже някъде от къде да взима тия пакети, които да ги forward към пппое връзката?

Благодаря предварително!

Отговор
в отговор на EroS #2

Re: Ubuntu + "connection sharing"

Purvo, tova ne se naricha connection sharing, a NAT.

Ne bi trqbvalo s tova pravilo da ti spira i tvoqt NET. Po dobre napishi praviloto s parametur -s kudeto posochvash IP adresa na iztochnika, t.e. na kompiutura na koito "iskash da dadesh NET". Po tozi nachin garantirano nqma da ti spre vruzkata zashtoto paketite ot tvoqta mashina nqma da vlizat v tova pravilo. Inache edna ot vuzmojnite prichini e ISP-to da ti podava paketite s TTL=1. Dori i taka da e, na tvoqta mashina pak trqbva da imash. Vij dali ti e aktiviran i ip_forward-a

Отговор
в отговор на EroS #3

Re: Ubuntu + "connection sharing"

Това е моя скрипт, с който си пускам нета към вътрешната мрежа:
#!/bin/sh

TTL=64
MTU=1500

INSIDE_DEV='Вградена SYS-900'
INSIDE_DEVICE=eth1
INSIDE_NETWORK=192.168.0.0
INSIDE_NETMASK=255.255.255.0
INSIDE_BROADCAST=192.168.0.255
INSIDE_IP=192.168.0.1
INSIDE_GATEWAY=192.168.0.1

OUTSIDE_DEV='Repotec RTL-8139'
OUTSIDE_DEVICE=ppp0

#
# Спиране на препращането
echo "0" > /proc/sys/net/ipv4/ip_forward
#

#
# Доброто старо маскиране ;-)
#
iptables -t nat -A POSTROUTING -s ${INSIDE_NETWORK}/${INSIDE_NETMASK} -o ${OUTSIDE_DEVICE} -j MASQUERADE

#
#Проблема TTL=1
#
iptables -t mangle -A PREROUTING -i ${OUTSIDE_DEVICE} -j TTL --ttl-inc 1
iptables -t mangle -A INPUT -i ${OUTSIDE_DEVICE} -j TTL --ttl-dec 1

#
# Уеднаквяване на ТТЛ-а на изходящите пакети
#
iptables -t mangle -A POSTROUTING -o ${OUTSIDE_DEVICE} -j TTL --set ${TTL}
#iptables -t mangle -A OUTPUT -o ${OUTSIDE_DEVICE} -j TTL --ttl-set ${TTL}

#
#Разрешаване "цепенето" на големи пакети
#
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

#
# Правилата са установени, вече можем да разрешим на ядрото "препращане"
#
echo "1" > /proc/sys/net/ipv4/ip_forward

Още малко толерантност никога не е излишна

Редактирано от мeтълДжyмa на

Отговор
в отговор на мeтълДжyмa #4

Re: Ubuntu + "connection sharing"

В отговор на:

echo "0" > /proc/sys/net/ipv4/ip_forward




Не претендирам че разбирам, но доколкото си спомням (смътно) има нещо като стандарт в главните дистрибуции мрежовите параметри към ядрото, които са в /proc/sys/net/ipv4, да се сетват за постоянно от файла /etc/sysctl.conf.

Сигурен съм, че описания от теб начин си работи и ти върши работа, но все пак, ако горното е вярно, си мисля че е по-удобно и лесно всички промени правени по мрежовите параметри да са локализирани на едно място.

Look at me and tell me if you've known me before.
Отговор
в отговор на DismalEuphony #5

Да

Горното (echo "0"... bla-bla) е селски начин да правиш нещо със sysctl, добре разпространен из нашите географски ширини.

Отговор
в отговор на Bиepko #6

Re: Да

Някъде в нета попаднах на кървав спор (меко казано) за sysctl или echo "..." > ... Аз също съм за използването на първия, но четох някъде, че докато се задават правила е хубаво действието да е забранено. Със sysctl аз не видях как може да стане. Не твърдя, че познавам в детайли материята, напротив... така че приемам идеи

Още малко толерантност никога не е излишна
Отговор
в отговор на мeтълДжyмa #7

Re: Да

Използването на sysctl е повече БСД стайл от колкото линукс в общия случай е въпрос на навик или предпочитание.
По лесния вариант е echo "" > /proc/* най-малкото че с един ред можеш да сетнеш параметри на всичките мрежови карти в системата като например
echo "1"> /proc/sys/net/ipv4/conf/*/forwarding

Отговор
в отговор на adm #8

Re: Да

net.ipv4.conf.all
sysctl.conf e pravilnia nachin .. nali ne ochakvas nekoi da rovi celata sistema za da razbere v koi skript si zabil echo ....

Дишайте лепило - хиляди Linux юзери не могат да грешат !
DrFrancky
Отговор
в отговор на DrFrancky #9

Re: Да

sysctl -a
------------------------------------------------
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.default.forwarding = 0
------------------------------------------------
sysctl net.ipv4.conf.all.forwarding=1
-------------------------------------------------
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.default.forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.eth0.forwarding = 1
-------------------------------------------------
vconfig add eth0 100
net.ipv4.conf.eth0/100.forwarding = 0

Франки всички знаем че си капацитет по всички въпроси но има случай в които това не работи.

Отговор
в отговор на adm #10

Re: Да

conf.all. не сетва автоматически всички conf.*, функцията му е друга, но то се иска малко мисъл да я схванеш....
чукча не читател, чукча - писател ;)



Отговор
в отговор на C.Capъeв #12

Re: Да

Функцията му е точно такава да сетва всички параметри проблема, е че не работи когато не променяш самата стойност на conf.all
Колкото до чукча ако нямаш какво да кажеш по добре не казвай нищо.

Отговор