Kernel-mode pppoe Fedora 10 alatt

Sziasztok!

A közepébe vágok..
A szituáció a következő: Van egy Athlon XP 3000+ gép, ami a gateway szerepét tölti be a lakásban.
DigiNET, IP MASQ, iptables tűzfal, apache, vnc, dhcp, miegymás.. Szóval a net pppoe alapon működik,
de nagy hálózati forgalom esetén a cpu load elég magas, a kihasználtság 25..30%. Na ezt kicsit soknak
vélem, úgyhogy kernel-mode -ba állítanám a pppoe klienst. rp-pppoe Fedora repo-ból, megvan a kernel
modul is, a konfigba bele is van írva, megy is szépen...DE: néhány oldal egyszerűen nem tölthető be.
Google, a hiba az MTU-val van. A user-mode pppoe tud alapból olyat, hogy clamping, ami kényszeríti
az ilyen oldalakra történő küldéskor az MTU leszorítását. Namost.. Ha a kernel-mode -ban indítom a
pppoe klienst, akkor a parancsban nincs is benne a clamping, de ha bele is rakom (-m 1412) akkor a
szkript elhasal. Google, a megoldás, hogy ilyenkor az iptables -el oldjam meg az ilyen gondokat.
Az iptables sor a következő:

$IPT -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

De bizony nem megy. És nem hiszem el, hogy a kernel-mode nem tud ilyet! A cpu-használat egyébként
tényleg visszaesett, nagyon, a korábbi 25..30% kb. 3..4%-ra. Szóval nagyon hasznos volna az alkalmazása.
Esetleg nektek bármi tapasztalat? Az se baj, ha nem konkrétan Fedora, majd áthegesztem :)

Hozzászólások

Ha valoban mtu, akkor nezz kurul, mert jol csinaltad, csak az eredmeny nem jo :(

A tcpmms legyen az elso a forwardnal, az mtu-t meg add meg kezzel:
/etc/ppp/pppoe.conf-ban, nalam: CLAMPMSS=1412

A tcpmms legyen az elso a forwardnal, az mtu-t meg add meg kezzel:

Ezt hogy érted? Ez legyen a firewall-script legelején? (Egyébként ott van, a kernelmodulok betöltése
után közvetlenül.)
A /etc/ppp/pppoe.conf-ban nálam is benne van a CLAMPMSS=1412, csak ezt a kernel-mode indításakor bele
se rakja a parancsba (ps aux|grep pppd alapján).. Beleírtam kézzel de el se indult a script.
Az MTU kézi megadása.. A pppoe kapcsolat természetesen 1492 MTU, a belső hálón meg nem akarok kézzel
állítgatni, a M$ meg nem veszi fel dhcp-ből az option interface-mtu 1492 -t.
Szóval a clamping lenne a megoldás. (Azért nem akarok kézzel állítgatni, mert ha pl. haver jön, akkor
nem akarom a gépét buherálni, menjen és pötty.)

if !(amixer -c 0 sset Master,0 mute >/dev/null) then ln -s /dev/null /home/$you == "Silence! I kill you!" :)

A script-ben mi van, azt nem tudom, de, ha egy 'iptables -nvL FORWARD' -ot kiadsz, ez legyen az elso.

Nalam a 'ps ax|grep ppd' ezt adja ki:

/usr/sbin/pppd pty /usr/sbin/pppoe -p /var/run/pppoe-adsl.pid.pppoe -I eth0 -T 80 -U -m 1412 ipparam ppp0 linkname ppp0 noipdefault noauth default-asyncmap defaultroute hide-password nodetach mtu 1492 mru 1492 noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp user xxxx lcp-echo-interval 20 lcp-echo-failure 3

Semmi extrat nem csinaltam, csak futtattam az adsl-setup parancsot par eve :) (ezert is nincs konkret otletem, mert nagyon regota mukodik, es kesz)

Nalam a konkret tcpmss hasznalat igy nez ki:

-A FORWARD -p tcp --tcp-flags SYN,RST SYN -o ppp+ -j TCPMSS --clamp-mss-to-pmtu

Szerk: most latom, hogy ez ugyanaz, mint amit Te be-paste-eltel :)

Akkor elbeszeltunk egymas mellett :( Ezkutan mi a kernel-mode pppoe? A gep, amit mutattam, elegge nagy net forgalmat bonyolit, egy slot 1-es p3-665(?), 128MB rammal, es semmi kulonos terheles nincs rajta. /Illetve egy mailszerver, de csak relay/. Ezert gondoltam, hogy ez kernel mode-u :)

Akkor megnyugodtam :) Van ilyenem:
# Linux kernel-mode plugin for pppd. If you want to try the kernel-mode
# plugin, use LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so

Ha gondolod privat elkudlhetem a konfigot, de semmi kulonoset nem csinaltam. A fajo inkabb az, hogy nem emlexem ra mit is gorcsoltem egy adsl-lel, ugy tunik oregszem :)

Szerk: BTW igazad van, nincs a file ott, ahova mutat. Ha meg a heten is gorcsolsz vele, akkor megnezem, ha letezo pluginre mutat, akkor mit csinal.

Az jó :) Mármint hogy
Plugin rp-pppoe.so loaded.
RP-PPPoE plugin version 3.3 compiled against pppd 2.4.4

Logban nálam sincs semmi különös ezen kívül..
De a helyzet az, hogy azzal van a gond, hogy a gép "mögött" nat-olt gépekről nem megy az a pár site amit írtam. Szóval ezt kellene kipróbálni. A szerverről simán megy minden site, a problémásak is.
(vnc-vel néztem, van fent egy xfce..)

Termeszetesen mukodik a halozat is, kulonben lecsavarnak a fejemet :) Csak gondoltam jelentkezik vmi kulonbseg is :D

Szerk:

A parancssor viszont nem igazan valtozott:
/usr/sbin/pppd pty /usr/sbin/pppoe -p /var/run/pppoe-adsl.pid.pppoe -I eth0 -T 80 -U -m 1412 ipparam ppp0 linkname ppp0 noipdefault noauth default-asyncmap defaultroute hide-password nodetach mtu 1492 mru 1492 noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp user XXXXX lcp-echo-interval 20 lcp-echo-failure 3

/usr/sbin/pppoe -p /var/run/pppoe-adsl.pid.pppoe -I eth0 -T 80 -U -m 1412

A parancs alapján nem a kernel-mode megy ott, mert nálad:
/usr/sbin/pppoe -p /var/run/pppoe-adsl.pid.pppoe -I eth0 -T 80 -U -m 1412
indítja a kapcsolatot, user-mode -ban,
/usr/sbin/pppd pty /usr/sbin/pppoe -p /var/run/pppoe-adsl.pid.pppoe -I eth0 -T 80 -U -m 1412 ipparam ppp0 linkname ppp0 noipdefault noauth default-asyncmap defaultroute hide-password nodetach mtu 1492 mru 1492 noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp user XXXXX lcp-echo-interval 20 lcp-echo-failure 3
részből az ipparm előtt semminek sem kellene állnia valamint a kernel-mode -hoz a plugint is meg kellene neveznie. A pty a pszeudo tty a szoftveres pppoe-klienshez

  • http://www.akadia.com/services/pppoe_iptables.html
  • itt van egy remek leírás abszolult témábavágóan.

    Most ez van a tűzfalban megadva:

    $IPT -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1200:1536 -j TCPMSS --clamp-mss-to-pmtu
    $IPT -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ppp0 -j TCPMSS --set-mss 1410

    Szóval ezzel most úgy néz ki, hogy megy.. De fura azért a clamp után fix megadva.
    Ha csak az egyik vagy másik van csak megadva akkor nem megy.
    (A próbához ajánlom a port.hu oldalt pl.)
    A load meg úgy alakul, hogy le/fel ~2000K forgalom (hdd ír/olvas) mellett az eddigi 3..4 -ről most 0.35..0.45 -re esett. A CPU-t nem zabálja semmi.

    A netet már soknapja böngészve

  • http://freshmeat.net/projects/iptables-firewall/
  • akadtam erre:

  • http://rocky.eld.leidenuniv.nl/
  • Ebből merítve a következőket szedtem ki:

    $IPT -A FORWARD -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
    $IPT -A OUTPUT -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
    $IPT -t nat -A POSTROUTING -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

    Ezzel elvileg mennie kellene a clamping-nek, maxra kihasználva a hálózat lehetőségeit.
    overSSH beállítottam, barátnőm szerint minden problémás site megy, szóval a probléma elvileg megoldott :)
    Fonya, azért ha teheted kérlek nézd már meg te is!

    [szerk.]
    Csak hogy teljes legyen a kép:

    $IPT -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ppp0 -j TCPMSS --clamp-mss-to-pmtu

    Ha csak ez a sor van bent akkor megy :)

    Biztos, hogy a pppoe kernel modu futtatasa megoldja a magas loadot?

    Nalam sokaig egy P1-es 266-os gep volt a gateway es egy 10 megas netet vitt proxyval, smarthost-tal, vpn-nel. Nem nagyon latszott meg rajta a terheles.