["Megoldva"] Zentyal Network.pm probléma

Fórumok

Sziasztok!

Pár napja küzdök egy problémával. A techinfo levelezési listán már felvetettem, de mivel nem kaptam rá választ, hozzátok fordulok. A techinfo-n itt indul a szál:
http://lista.sulinet.hu/pipermail/techinfo/2012-February/070749.html
de röviden összefoglalom itt is.

Van két internetvonalunk: egyik Sulinetes ADSL (fix IP), a másik Mikrós (fix IP, PPPoE). A két internetvonalat egy Zentyal fogja össze, ez az átjáró a belső hálózatban. A Zentyal-t a webes felületen keresztül adminisztrálom. Egy pár napja azonban hibaüzenettel elszáll a hálózati beállítások mentésének egy része, és ez elég kellemetlen routolási és port forrwardol problémákat okoz. A hibaüzenet:


2012/02/17 09:55:26 INFO> Base.pm:250 EBox::Module::Base::__ANON__ - Saving config for module: network
2012/02/17 09:55:28 ERROR> Sudo.pm:213 EBox::Sudo::_rootError - root command set -e
/usr/share/zentyal-network/flush-fwmarks
/sbin/ip route flush table 102
/sbin/ip rule add fwmark 2/0xFF table 102
/sbin/ip rule add from [MIKROS_NET_IP] table 102
/sbin/ip rule add from table 102
/sbin/ip route add default dev ppp0 table 102
/sbin/ip route flush table 101
/sbin/ip rule add fwmark 1/0xFF table 101
/sbin/ip rule add from [SULINET_GW_IP] table 101
/sbin/ip rule add from [SULINET_DEFAULT_IP] table 101
/sbin/ip route add default via [SULINET_GW_IP] dev eth0 src [SULINET_DEFAULT_IP] table 101
/sbin/ip rule add table main
/sbin/iptables -t mangle -A PREROUTING -m mark --mark 0/0xff -m mac --mac-source 00:11:22:33:44:55 -j MARK --set-mark 1
/sbin/iptables -t mangle -A POSTROUTING -o eth0 -j MARK --set-mark 1
/sbin/iptables -t mangle -A PREROUTING -m mark --mark 0/0xff -i ppp0 -j MARK --set-mark 2
/sbin/iptables -t mangle -A POSTROUTING -o ppp0 -j MARK --set-mark 2
/sbin/iptables -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu failed.
Error output: Error: an inet prefix is expected rather than "table".

Tehát egy IP-t várt és egy "table" szöveget kapott.

Ezeket a parancsokat a "/usr/share/perl5/EBox/Network.pm" fájl "_multiRoutes" függvénye (2941-3089 sorok) generálja. Miután soronként elkezdtem ellenőrizni a Network.pm fájlt, hogy mit és hogyan is generál, sikerült megtalálnom a hibás sort :-) Ez az:

/sbin/ip rule add from table 102

Ezt a sort a "/usr/share/perl5/EBox/Network.pm" 3010-3013 sorai között generálja:

# Add rule by source in multi interface configuration
if ( scalar keys %interfaces > 1 ) {
push(@cmds, "/sbin/ip rule add from $address table $table");
}

Tehát az "$address" változó nem kap értéket a ppp0 esetén. Már azon vagyok, hogy módosítom a "/usr/share/perl5/EBox/Network.pm" fájl 3011-es sorát az alábbira:

if ( ( scalar keys %interfaces > 1 ) and $address ne "" ) {

A 3000-3004 sorokban is külön kezeli le a ppp-t, gondolom a hiányzó $address változó miatt. Ennek megfelelően akár erre is változtathatnám:

if ( ( scalar keys %interfaces > 1 ) and $method ne 'ppp' ) {

A teljes Network.pm itt tekinthető meg: http://pastebin.com/XLmdacHU

Van ötletetek mi lehet a tényleges probléma? Nem szívesen nyúlok bele a forrásba, de ha muszáj akkor megteszem.

Hozzászólások

Tüneti kezeléssel orvosoltam a problémát.

A "/usr/share/perl5/EBox/Network.pm" fájl 3011. sorát:

if ( scalar keys %interfaces > 1 ) {

a következőre cseréltem:

if ( (scalar keys %interfaces > 1) and ($method ne 'ppp') ) {

Ennek hatására megszűntek a hibaüzenetek, és minden tökéletesen működik.