Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: vstoykov в Jun 11, 2008, 22:20



Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Jun 11, 2008, 22:20
Имам два компютъра.
Първи компютър:
eth0 - адрес: 192.168.0.2 / маска: 255.255.255.0
eth1 - адрес: 10.1.x.x / маска: 255.255.0.0
Втори компютър:
eth0 - адес: 192.168.0.5 / маска:255.255.255.0

eth0 на първия компютър е свързан с eth0 на втория.
eth1 на първия компютър е към доставчика на Интернет.

На втория компютър съм задал за default gateway адреса на първия (eth0 - 192.168.0.2).  Настройките за DNS на двата компютъра са еднакви.

Правя следните настройки на първия компютър:
Примерен код

# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf
# echo "net.ipv4.ip_local_port_range = 1024 32768"  >> /etc/sysctl.conf
# echo "net.ipv4.conf.all.arp_ignore = 1" >>  /etc/sysctl.conf
# sysctl -p

# modprobe ipt_TTL
# iptables -t mangle -A PREROUTING -i eth1 -j TTL --ttl-inc 1
# iptables -t mangle -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j TTL --ttl-set 64
# iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE


До тук всичко работи. И на двата компютъра има връзка.

При пускане на ppp0 на първия компютър и изпълнение на горепосочените команди (като eth1 е заменено с ppp0) се наблюдава проблем - на втория компютър няма връзка.





Титла: настройка на рутер - не работи при ppp0
Публикувано от: divak в Jun 11, 2008, 22:45
Да не би ppp-то да ти променя DNS-а ?

/etc/ppp/pppoe.conf

Цитат

# DNS type: SERVER=obtain from server; SPECIFY=use DNS1 and DNS2;
# NOCHANGE=do not adjust.
DNSTYPE=SERVER

# Obtain DNS server addresses from the peer (recent versions of pppd only)
# In old config files, this used to be called USEPEERDNS. Changed to
# PEERDNS for better Red Hat compatibility
PEERDNS=no

DNS1=
DNS2=

# Make the PPPoE connection your default route. Set to
# DEFAULTROUTE=no if you don't want this.
DEFAULTROUTE=yes



Така ппп ти взима DNS от сървъра.





Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Jun 11, 2008, 22:56
Настройките в /etc/resolv.conf са еднакви във всеки един момент от време и на двата компютъра.


Титла: настройка на рутер - не работи при ppp0
Публикувано от: divak в Jun 11, 2008, 23:02
ми ...пусни пингове (от външната машина) на вън и на вътре - за да се знае дали тя има достъм до навсякъде, и от вътрешната машина за навън.
Може да се окаже че :
iptables -t mangle -A PREROUTING -i eth1 -j TTL --ttl-inc 1
не работи - тоест този модул не е зареден ...примерно
или ...ппп-то да не си взима настройките (по накаква причина)
-разните там .. SERVICENAME
А и рут таблицата дали е променена от ппп ?

Някой хитреци слагат TTL=0, и тогава :
iptables -t mangle -A PREROUTING -i eth1 -j TTL --ttl-inc 2





Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Jun 12, 2008, 12:44
Връзка с връзката между компютъра свързан с кабела на ISP-то и Интернет няма. Има връзка между двата компютъра (ползвам ssh за да подавам команди на втория компютър). Когато напиша "ping адерес_в_интернет" на втория компютър всичко изглежда наред. Даже успявам да се свържа чрез "lftp ftp.slackware.com", но не мога да тегля. Когато напиша wget dir.bg намира index.html и замръзва до там - не тегли нищо (същото е и с някой браузър - не се зарежда страницата).

Това с --ttl-inc 2  не дава резултат. Когато съм свързан без pptp всичко е наред и без да правя промени по TTL.


Титла: настройка на рутер - не работи при ppp0
Публикувано от: Gaara в Jun 12, 2008, 13:35
Пробвай да сложиш iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE преди заобикалянето на ттл-а. Интересното е, че аз съм така и нямам проблем. Ако е от значение, към спнет съм.


Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Jun 12, 2008, 13:45
Пробвах горното, но не се получи.

За да опростя нещата направих следните прости настройки:

Примерен код


echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf
sysctl -p

# изчиствам настройките
iptables -F
iptables -X
iptables -F -t mangle
iptables -X -t mangle
iptables -F -t nat
iptables -X -t nat

# само един ред:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


Когато pppoe не работи всичко е ОК. Когато активиран pppoe, и променя горните настройки като заменя eth1 с ppp0, се получава това (това е на втория компютър):

Примерен код

root@darkstar:~# ping dir.bg
PING dir.bg (194.145.63.12) 56(84) bytes of data.
64 bytes from dir.bg (194.145.63.12): icmp_seq=1 ttl=58 time=12.1 ms
64 bytes from dir.bg (194.145.63.12): icmp_seq=2 ttl=58 time=12.4 ms
64 bytes from dir.bg (194.145.63.12): icmp_seq=3 ttl=58 time=11.8 ms

--- dir.bg ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 11.821/12.119/12.421/0.244 ms
root@darkstar:~# wget dir.bg
--13:44:42--  http://dir.bg/
           => `index.html'
Преобразувам dir.bg... 194.145.63.12
Connecting to dir.bg|194.145.63.12|:80... успешно свързване.
HTTP изпратено искане, чакам отговор... 302 Found
Адрес: http://www.dir.bg/ [следва]
--13:44:42--  http://www.dir.bg/
           => `index.html'
Преобразувам www.dir.bg... 194.145.63.12
Connecting to www.dir.bg|194.145.63.12|:80... успешно свързване.
HTTP изпратено искане, чакам отговор...


и така чакам отговор до безкрайност...

При първия компютър има връзка с Интернет.

Доставчикът на интернет е Интербилд.





Титла: настройка на рутер - не работи при ppp0
Публикувано от: Gaara в Jun 12, 2008, 13:52
Я пробвай следният тестов скрипт, който работи при мен:
Примерен код

EXT=ppp0
INT=eth0
echo "net.ipv4.ip_forward = 1">> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 32768 ">>/etc/sysctl.conf

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! $EXT -j ACCEPT
iptables -A FORWARD -i $EXT -o $INT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INT -o $EXT -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE
iptables -A FORWARD -i $EXT -o $INT -j REJECT
iptables -t mangle -A PREROUTING -i $EXT -j TTL --ttl-inc 1
iptables -t mangle -A POSTROUTING -s 192.168.0.0/24 -o $EXT -j TTL --ttl-set 64


Edit: DNS-те са ми еднакви и на двете машини, като втората няма и Х и само с wget боравя :)





Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Jun 12, 2008, 14:49
Благодаря на divak и Gaara за съдействието.

Пробвах горното. За съжаление не се получава при ppp0 (иначе с eth1 работи)...


Титла: настройка на рутер - не работи при ppp0
Публикувано от: Radev в Jun 12, 2008, 15:20
А от първия компютър wget-а работи ли през ppp0?


Титла: настройка на рутер - не работи при ppp0
Публикувано от: VladSun в Jun 12, 2008, 15:23
Прилича ми на "рязане" по TTL за всички протоколи освен ICMP.


Титла: настройка на рутер - не работи при ppp0
Публикувано от: gat3way в Jun 12, 2008, 15:34
Мене ми прилича на PMTU проблем. На този втория компютър му смъкни интерфейса и го вдигни с ifconfig eth0 x.x.x.x netmask blabla mtu 1400 up, сложи му наново default gw-a (защото като смъкнеш интерфейса ще го отнема), после пробвай пак. Очевидно някъде поради някаква причина се филтрират ICMP fragmentation needed съобщенията.


Титла: настройка на рутер - не работи при ppp0
Публикувано от: VladSun в Jun 12, 2008, 15:53
Цитат (gat3way @ Юни 12 2008,15:34)
Мене ми прилича на PMTU проблем.

Да, определено пробвай - и този проблем съм го имал (макар и само с някои сайтове ...)


Титла: настройка на рутер - не работи при ppp0
Публикувано от: gat3way в Jun 12, 2008, 15:57
Ем то зависи къде е този пакостник дето се е разиграл с филтрирането :)


Титла: настройка на рутер - не работи при ppp0
Публикувано от: tolostoi в Jun 12, 2008, 18:42
Ооо направо претръпнах, преди година и половина 2 го мъчих тоя впн (то беше малко след като за първи път видях линукс :) ) и ме би много жестоко, не мога да му го простя и още ме е яд  :crazy:  Бях го докарал горе-долу до това полужение и странното беше, че ICS на windows го прекарваше, а аз тогава не успях с Убунту (ама и от нищо не отбирах). Ще дам още малко инфо.
pptp с mppe 128 бит енкрипшън. Няма ограничение по ttl мисля, че не се режат и високите портове. Преди беше задължително да свалиш mtu-то за да работи нормално (1380 беше ОК) vstoykov да каже как е в момента при него.
То, май има и загуби на пакети при дълги пингове, сваляне и вдигане на ppp0 ги оправят (понякога) Според мен проблема си е във ВПН-а по добре да се пусне дебъг и да се види какво хвърля.

Дори ето го последният пиър който работеше при мен, може да го тествам довечера дали още работи.

Примерен код
remotename mytunnel
linkname mytunnel
ipparam mytunnel
# data stream for pppd to use
pty "pptp 195.138.138.17 --nolaunchpppd "
name *****
usepeerdns
require-mppe
mppe-stateful
persist
# do not require the server to authenticate to our client
noauth
# adopt defaults from the pptp-linux package
file /etc/ppp/options.pptp
#mtu 1450
#mtu 1450


vstoykov пробвай да махнеш всички статични маршрути, спри скриптовете които ги изпълняват и вдигни тунела ръчно сложи за deafult gw ppp0 и тогава маскирай ppp0, друг вариант е да пробваш да поставиш вместо ppp0 за deafult gw, адреса 195.138.138.2 не маскирай eth1





Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Jun 12, 2008, 22:28
Пробвах с "mtu 1400 up", "mtu 1380 up" - не става.

Настройките ми в /etc/ppp/peers/mypeer е "mtu 1380".

На компютъра, към който е връзката с Интернет нямам проблем с връзката с Интернет. Проблемът се наблюдава само на втория компютър. Май ще сложа един прокси сървър на първия компютър и така ще настроя браузъра да го ползва, защото иначе не става...

Не успях да реша тази задача, но реших друга:
Готова е първата версия на инсталатора на Васт ГНУ/Линукс :-)





Титла: настройка на рутер - не работи при ppp0
Публикувано от: Radev в Jun 13, 2008, 10:52
Защо не опиташ с
Примерен код
ping -s 1472 dir.bg
. Поне ще знаеш дали проблема е в големината на пакета.


Титла: настройка на рутер - не работи при ppp0
Публикувано от: voyager в Jun 13, 2008, 11:01
Привет, ето и моите 10 цента:

- Пробвай да направиш tcpdump/wireshark на ppp0 и да видиш какво реално минава през интерфейса и какво получаваш като отговор.

Виж все пак дали нямаш -P FORWARD DROP някъде в iptables-a... знам че е тъпо, но и с това съм имал 1 път проблем... :)

- Пробвай следния код:
Примерен код

EXT=ppp0
INT=eth1  #или eth0, където ти е вързан комп2.

sysctl -w  "net.ipv4.ip_forward = 1"

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

iptables -P FORWARD ACCEPT

# iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE # obsolete

iptables -t nat -A POSTROUTING -o $EXT -j SNAT --to-source `ip addr list ${EXT}|grep inet|grep -v inet6|tr "/" " "|awk {'print $2'}` ## това не съм го тествал дали така може в shell script, но идеята е да вземеш ip на ppp0 интерфейса
iptables -t mangle -A PREROUTING -i $EXT -j TTL --ttl-set 64
iptables -t mangle -A POSTROUTING -s 192.168.0.0/24 -o $EXT -j TTL --ttl-set 64

успех!


Титла: настройка на рутер - не работи при ppp0
Публикувано от: tolostoi в Jun 13, 2008, 12:07
vstoykov не се отказвай, че ми тръпка и ме е яд още, аз се предадох - плащам за "реално ай пи" (и името му е точно, защото не е баш публичен адрес, тъй като до него нямат достъп клиентите на същият доставчик)


Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Jun 14, 2008, 15:19
Леко модифицирах скрипта за да работи:
Примерен код

EXT=ppp0
INT=eth0  #или eth1, където ти е вързан комп2.

sysctl -w net.ipv4.ip_forward=1
sysctl -p

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

iptables -P FORWARD ACCEPT

# iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE # obsolete

iptables -t nat -A POSTROUTING -o $EXT -j SNAT --to-source $(ifconfig  | grep $EXT -A 2 | grep "inet addr" | cut -d \: -f 2 | cut -d " " -f 1)
iptables -t mangle -A PREROUTING -i $EXT -j TTL --ttl-set 64
iptables -t mangle -A POSTROUTING -s 192.168.0.0/24 -o $EXT -j TTL --ttl-set 64


Това е на втората машина:

Примерен код

valentin@darkstar:~$ ping -s 1472 dir.bg
PING dir.bg (194.145.63.12) 1472(1500) bytes of data.
From myrouter.interbild.net (192.168.0.1) icmp_seq=1 Frag needed and DF set (mtu = 1376)

--- dir.bg ping statistics ---
12 packets transmitted, 0 received, +1 errors, 100% packet loss, time 11001ms

valentin@darkstar:~$ ping -s 1472 hit.bg
PING hit.bg (195.24.37.245) 1472(1500) bytes of data.
From myrouter.interbild.net (192.168.0.1) icmp_seq=1 Frag needed and DF set (mtu = 1376)

--- hit.bg ping statistics ---
6 packets transmitted, 0 received, +1 errors, 100% packet loss, time 4998ms

valentin@darkstar:~$ ping  hit.bg
PING hit.bg (195.24.37.245) 56(84) bytes of data.

--- hit.bg ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4010ms

valentin@darkstar:~$ ping www.interbild.net
PING freeweb-1.interbild.net (195.138.138.193) 56(84) bytes of data.

--- freeweb-1.interbild.net ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3010ms



Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Jun 14, 2008, 15:30
Примерен код

valentin@darkstar:/tmp$ ping -s 1472 dir.bg
PING dir.bg (194.145.63.12) 1472(1500) bytes of data.
From myrouter.interbild.net (192.168.0.1) icmp_seq=1 Frag needed and DF set (mtu = 1376)

--- dir.bg ping statistics ---
11 packets transmitted, 0 received, +1 errors, 100% packet loss, time 9999ms

valentin@darkstar:/tmp$ ping dir.bg
PING dir.bg (194.145.63.12) 56(84) bytes of data.
64 bytes from dir.bg (194.145.63.12): icmp_seq=1 ttl=63 time=32.6 ms
64 bytes from dir.bg (194.145.63.12): icmp_seq=2 ttl=63 time=11.3 ms
64 bytes from dir.bg (194.145.63.12): icmp_seq=3 ttl=63 time=17.7 ms

--- dir.bg ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 11.318/20.576/32.693/8.957 ms
valentin@darkstar:/tmp$ wget dir.bg
--15:24:13--  http://dir.bg/
           => `index.html'
Преобразувам dir.bg... 194.145.63.12
Connecting to dir.bg|194.145.63.12|:80... успешно свързване.
HTTP изпратено искане, чакам отговор... 302 Found
Адрес: http://www.dir.bg/ [следва]
--15:24:14--  http://www.dir.bg/
           => `index.html'
Преобразувам www.dir.bg... 194.145.63.12
Connecting to www.dir.bg|194.145.63.12|:80... успешно свързване.
HTTP изпратено искане, чакам отговор...      


След като добавя и командата:
Примерен код

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


Примерен код

valentin@darkstar:/tmp$ ping -s 1472 dir.bg
PING dir.bg (194.145.63.12) 1472(1500) bytes of data.

--- dir.bg ping statistics ---
9 packets transmitted, 0 received, 100% packet loss, time 7999ms

valentin@darkstar:/tmp$ ping dir.bg
PING dir.bg (194.145.63.12) 56(84) bytes of data.
64 bytes from dir.bg (194.145.63.12): icmp_seq=1 ttl=63 time=12.5 ms
64 bytes from dir.bg (194.145.63.12): icmp_seq=2 ttl=63 time=12.9 ms
64 bytes from dir.bg (194.145.63.12): icmp_seq=3 ttl=63 time=11.7 ms
64 bytes from dir.bg (194.145.63.12): icmp_seq=4 ttl=63 time=11.5 ms
64 bytes from dir.bg (194.145.63.12): icmp_seq=5 ttl=63 time=11.1 ms

--- dir.bg ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 11.192/11.985/12.929/0.647 ms
valentin@darkstar:/tmp$ wget dir.bg
--15:25:39--  http://dir.bg/
           => `index.html'
Преобразувам dir.bg... 194.145.63.12
Connecting to dir.bg|194.145.63.12|:80... успешно свързване.
HTTP изпратено искане, чакам отговор... 302 Found
Адрес: http://www.dir.bg/ [следва]
--15:25:39--  http://www.dir.bg/
           => `index.html'
Преобразувам www.dir.bg... 194.145.63.12
Connecting to www.dir.bg|194.145.63.12|:80... успешно свързване.
HTTP изпратено искане, чакам отговор...                      


Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Jun 14, 2008, 15:33
Настройките ми са:

Примерен код

root@myrouter:/etc/ppp/peers# cat interbild
# име на тунел, което ще се ползва във файлa /etc/ppp/chap-secrets
remotename interbild

# име на тунел, което ще се ползва за име на файл в директорията /var/run
linkname interbild

# знаков низ, който ще се предаде на скрипта /etc/ppp/ip-up
# в конкретния случай ползваме този низ за адреса на сървъра
ipparam vpn.interbild.net
#ipparam 195.138.138.17

# data stream for pppd to use
#pty "pptp 195.138.138.17 --nolaunchpppd persist maxfail 0"
pty "pptp vpn.interbild.net --nolaunchpppd persist maxfail 0"
#pty "195.138.138.16 --nolaunchpppd persist maxfail 0"
#pty "pptp vpn.interbild.net --nolaunchpppd"
#pty "pptp vpn.interbild.net  --nolaunchpppd persist demand holdoff 120"

# domain и потребителско име, указващи съответните редове на файла /etc/ppp/chap-secrets
name xxxxxxxx

usepeerdns
require-mppe
mppe-stateful
persist

# do not require the server to authenticate to our client
noauth

# adopt defaults from the pptp-linux package
file /etc/ppp/options.pptp

mtu 1380

# end of tunnel file
root@myrouter:/etc/ppp/peers#  


Това "mtu 1380" ме притеснява - не ми е ясно какво е...


Титла: настройка на рутер - не работи при ppp0
Публикувано от: Radev в Jun 16, 2008, 12:19
The Maximum Transmission Unit is the largest packet that a given network medium can carry. Ethernet, for example, has a fixed MTU of 1500 bytes, ATM has a fixed MTU of 48 bytes, and PPP has a negotiated MTU that is usually between 500 and 2000 bytes. ...

mtu 1500 (ping -s 1472  example.com + 28 byte header) е максималния размер на пакет за ethernet мрежа, в твоя случай, дори да ползваш pppoe, mtu-то е нормално да е по-малко, защото заглавната част на ppp протокола се добавя към тази на ethernet протокола, но тук се намесват функциите за фрагментиране на пакетите и пакета се изпраща на части. Твоя проблем е с частите, не ги изпращаш (доставчика ти не ги получава или не ги препраща). Опитай ping с по-малък пакет (пр. -s 1300) и той най-вероятно ще мине. Можеш също да опиташ ping с голям пакет до default gw-я на първия компютър, за да видиш дали поне той ще ти отговори на такова запитване.

В общи линии най-добре се опитай да се разберш с доставчиците на Интернет, защото проблема най-вероятно е в техните настройки. От друга страна е възможно нарочно да са го създали и ако им обърнеш внимание, че искаш да го преодолееш, да почнат да те следят по-внимателно. :) Това поне ще ти покаже дали е или не е време да си смениш доставчика. :)


Титла: настройка на рутер - не работи при ppp0
Публикувано от: Gaara в Jun 16, 2008, 13:06
Пробвай също така да закоментираш mtu 1380, да рестартираш мрежата и да видиш дали случайно ще има някаква промяна :)


Титла: настройка на рутер - не работи при ppp0
Публикувано от: vstoykov в Oct 06, 2008, 13:54
Решението се оказа много просто...

Първоначално бях написал в rc.local:

Примерен код

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


Това работеше само когато няма ppp0. При активиране на ppp0 - връзка с втория компютър няма.

Решението: добавих този ред в rc.local:

Примерен код

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


За сега не се наблюдават проблеми - пробвах с протокол http и ftp.