Zorp 3.3.6 - port valasztas hostnev alapjan
Sziasztok! A multkor mar sikerult beuzemelni a zorpot, aminek nagyon orulok. Most vettem eszre (amikor elesben akartam hasznalni az iranyitasokat), hogy nem megy. Minden a regi config alapjan van, hibat nem dob, debugban sem latok tobbet. Esetleg valtozhatott valami a kifejezesekben, vagy valamit elirtam? Mindenkepp a belso 127.0.0.1:50080-as cimre iranyitja a kereseket, nem veszi figyelembe a hostnevenkent megadott tobbi portot. Koszi! D. ################ CONFIG : ##################### from Zorp.Core import * from Zorp.Plug import * from Zorp.Http import * from Zorp.Ftp import * Zorp.firewall_name = 'zorp@moya' InetZone("site-net", "x.y.x.y/24", # list of allowed outbound services, '*' matches anything #outbound_services=["intra_http", "intra_ftp", "intra_cvs"], outbound_services=["intra_http"], # list of allowed inbound services, '*' matches anything inbound_services=["intra_http"]) InetZone("local", "127.0.0.0/8", inbound_services=["*"], outbound_services=["*"]) InetZone("internet", "0.0.0.0/0", inbound_services=["intra_http"], outbound_services=["intra_http"]) # # Let's define a transparent http proxy, which rewrites the user_agent # header to something different. # class IntraHttp(HttpProxy): def config(self): HttpProxy.config(self) self.transparent_mode = TRUE self.request_timeout = 1800000 self.request_header["Host"] = (HTTP_HDR_POLICY, self.TargetByHostHeader) self.request["GET"] = (HTTP_REQ_POLICY, self.filterURL) self.request["POST"] = (HTTP_REQ_POLICY, self.filterURL) def filterURL(self, method, url, version): self.setRequestHeader("X_HOST", self.session.client_address.ip_s) log("http.info", 3, "%s: GET: %s" % (self.session.session_id, url)) return HTTP_REQ_ACCEPT def filterHost (self, hdr_name, hdr_value): return HTTP_HDR_ACCEPT def TargetByHostHeader(self, name, value): if(value == "domain1.hu" or value == "www.domain1.hu" or value == "www2.domain2.hu" ): self.session.server_address = SockAddrInet("127.0.0.1" ,50083) # APACHE 3 return HTTP_HDR_ACCEPT elif(value == 'domain3.hu' or value == 'domain4.hu' ): self.session.server_address = SockAddrInet("127.0.0.1" ,50081) return HTTP_HDR_ACCEPT else: self.session.server_address = SockAddrInet("127.0.0.1" ,50080) return HTTP_HDR_ACCEPT # zorp_http instance def zorp_http(): # create services Service("intra_http", IntraHttp, router=DirectedRouter(SockAddrInet("127.0.0.1", 50080))) Listener(SockAddrInet("x.y.x.y", 80), "intra_http")
Kozben eljutottam odaig, debugolas utjan, hogy a hostneveket ertelmezi a lekeres alapjan. Arra jutottam, hogy a router tipusa lehet, ami bekavar, mert az nyomja mindenkepp az 50080-as portra a kerest. Ebben annyi a furcsa, hogy korabbi verzional, ugyanezzel (illetve a az alabbi konfiggal teljesen jol mukodik, site1.loc cimre az 50081-es portra, egyebkent az 50080-asra iranyit. Probalom keresni mi valtozhatott, illetve probaltam InbandRouter tipust hasznalni, de nem jon ossze. A dokumentacio pedig igen gyer, peldat is csak 2.0 vlahanyas zorp-hoz talaltam, ami persze nem mukodik. Mit nezek be ennyire durvan? policy file: from Zorp.Core import * from Zorp.Plug import * from Zorp.Http import * from Zorp.Ftp import * from Zorp.Pssl import * Zorp.firewall_name = 'zorp@server' InetZone("local", "127.0.0.0/8", inbound_services=["*"], outbound_services=["*"]) InetZone("internet", "0.0.0.0/0", inbound_services=["*"], outbound_services=["*"]) class IntraHttp(HttpProxy): def config(self): HttpProxy.config(self) self.transparent_mode = TRUE self.request_header["Host"] = (HTTP_HDR_POLICY, self.TargetByHostHeader) def TargetByHostHeader(self, name, value): if(value == 'site1.loc' ): self.session.server_address = SockAddrInet("127.0.0.1" , 50081) return HTTP_HDR_ACCEPT else: self.session.server_address = SockAddrInet("127.0.0.1" , 50080) return HTTP_HDR_ACCEPT def zorp_http(): Service("intra_http", IntraHttp, router=DirectedRouter(SockAddrInet("127.0.0.1", 50080)) ) Listener(SockAddrInet("10.20.2.160", 80), "intra_http")
Sziasztok!
A multkor mar sikerult beuzemelni a zorpot, aminek nagyon orulok. Most vettem eszre (amikor elesben akartam hasznalni az iranyitasokat), hogy nem megy.
Minden a regi config alapjan van, hibat nem dob, debugban sem latok tobbet. Esetleg valtozhatott valami a kifejezesekben, vagy valamit elirtam?
Mindenkepp a belso 127.0.0.1:50080-as cimre iranyitja a kereseket, nem veszi figyelembe a hostnevenkent megadott tobbi portot.
Koszi! D.
Szia, a 3.3-ban változott a session struktúrája, már nincs server_address, hanem egy target_address hash van, ami tartalmazza az összes beállított (pl. FailoverChainerhez kellő) célcímet. A lenti javításokkal már mennie kéne. Az overrideable attribútum helyével kapcsolatban nem vagyok 100%-ig biztos, de szólni fog a Zorp, ha nem jó helyre tettem. Ez az a paraméter, ami azt szabályozza, hogy a proxy osztály módosíthatja-e a routerben beállított célcímet. Doksit erre találsz, ami bár Pro-hoz van az egyetlen különbség most már a proxyk számossága: http://www.balabit.com/support/documentation/documents/zorp-3.3fr1-guides/zo... Balint class IntraHttp(HttpProxy): def config(self): HttpProxy.config(self) self.transparent_mode = TRUE self.request_header["Host"] = (HTTP_HDR_POLICY, self.TargetByHostHeader) def TargetByHostHeader(self, name, value): if(value == 'site1.loc'): self.session.target_address[0] = SockAddrInet("127.0.0.1" , 50081) return HTTP_HDR_ACCEPT else: self.session.target_address[0] = SockAddrInet("127.0.0.1" , 50080) return HTTP_HDR_ACCEPT def zorp_http(): Service("intra_http", IntraHttp, router=DirectedRouter(dest_addr=(SockAddrInet("127.0.0.1", 50080),), overrideable=TRUE) Listener(SockAddrInet("10.20.2.160", 80), "intra_http") On 02/23/2011 02:02 AM, Farkas Dániel wrote:
Kozben eljutottam odaig, debugolas utjan, hogy a hostneveket ertelmezi a lekeres alapjan.
Arra jutottam, hogy a router tipusa lehet, ami bekavar, mert az nyomja mindenkepp az 50080-as portra a kerest.
Ebben annyi a furcsa, hogy korabbi verzional, ugyanezzel (illetve a az alabbi konfiggal teljesen jol mukodik, site1.loc cimre az 50081-es portra, egyebkent az 50080-asra iranyit.
Probalom keresni mi valtozhatott, illetve probaltam InbandRouter tipust hasznalni, de nem jon ossze. A dokumentacio pedig igen gyer, peldat is csak 2.0 vlahanyas zorp-hoz talaltam, ami persze nem mukodik.
Mit nezek be ennyire durvan?
policy file:
from Zorp.Core import * from Zorp.Plug import * from Zorp.Http import * from Zorp.Ftp import * from Zorp.Pssl import *
Zorp.firewall_name = 'zorp@server'
InetZone("local", "127.0.0.0/8", inbound_services=["*"], outbound_services=["*"])
InetZone("internet", "0.0.0.0/0", inbound_services=["*"], outbound_services=["*"])
class IntraHttp(HttpProxy): def config(self): HttpProxy.config(self) self.transparent_mode = TRUE self.request_header["Host"] = (HTTP_HDR_POLICY, self.TargetByHostHeader)
def TargetByHostHeader(self, name, value): if(value == 'site1.loc' ): self.session.server_address = SockAddrInet("127.0.0.1" , 50081) return HTTP_HDR_ACCEPT else: self.session.server_address = SockAddrInet("127.0.0.1" , 50080) return HTTP_HDR_ACCEPT
def zorp_http(): Service("intra_http", IntraHttp, router=DirectedRouter(SockAddrInet("127.0.0.1", 50080)) ) Listener(SockAddrInet("10.20.2.160", 80), "intra_http")
Sziasztok! A multkor mar sikerult beuzemelni a zorpot, aminek nagyon orulok. Most vettem eszre (amikor elesben akartam hasznalni az iranyitasokat), hogy nem megy. Minden a regi config alapjan van, hibat nem dob, debugban sem latok tobbet. Esetleg valtozhatott valami a kifejezesekben, vagy valamit elirtam? Mindenkepp a belso 127.0.0.1:50080-as cimre iranyitja a kereseket, nem veszi figyelembe a hostnevenkent megadott tobbi portot. Koszi! D.
_______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
On Wed, Feb 23, 2011 at 08:03:50AM +0100, Kovács Bálint wrote:
a 3.3-ban változott a session struktúrája, már nincs server_address, hanem egy target_address hash van, ami tartalmazza az összes beállított (pl. FailoverChainerhez kellő) célcímet. A lenti javításokkal már mennie
class IntraHttp(HttpProxy): def config(self): HttpProxy.config(self) self.transparent_mode = TRUE self.request_header["Host"] = (HTTP_HDR_POLICY, self.TargetByHostHeader)
def TargetByHostHeader(self, name, value): if(value == 'site1.loc'): self.session.target_address[0] = SockAddrInet("127.0.0.1" , 50081)
Nekem mukodik a self.session.setServer(SockAddrInet("127.0.0.1" , 50081)) megoldas is. -- Udvozlettel Zsiga
On 02/23/2011 08:12 AM, Kosa Attila wrote:
On Wed, Feb 23, 2011 at 08:03:50AM +0100, Kovács Bálint wrote:
a 3.3-ban változott a session struktúrája, már nincs server_address, hanem egy target_address hash van, ami tartalmazza az összes beállított (pl. FailoverChainerhez kellő) célcímet. A lenti javításokkal már mennie
class IntraHttp(HttpProxy): def config(self): HttpProxy.config(self) self.transparent_mode = TRUE self.request_header["Host"] = (HTTP_HDR_POLICY, self.TargetByHostHeader)
def TargetByHostHeader(self, name, value): if(value == 'site1.loc'): self.session.target_address[0] = SockAddrInet("127.0.0.1" , 50081) Nekem mukodik a self.session.setServer(SockAddrInet("127.0.0.1" , 50081)) megoldas is.
Sőt, a setServerAddress-be is be lehet kötni, viszont ehhez InbandRouter kell szerintem: class IntraHttpProxy(HttpProxy): def config(self): HttpProxy.config(self) def setServerAddress(self, host, port): hostlist={"intra.loc":("1.2.3.4", 80), "intra2.loc":("1.2.3.4", 81),} if self.hostlist.has_key(host): newhost = self.hostlist[host][0] port = self.hostlist[host][1] host = newhost return HttpProxy.setServerAddress(self, host, port)
Nalam ez teljesen hatastalan, probaltam korabban is, amikor raakadtam.
Nekem mukodik a self.session.setServer(SockAddrInet("127.0.0.1" , 50081)) megoldas is.
2011-02-23 19:01 keltezéssel, Farkas Dániel írta:
Nalam ez teljesen hatastalan, probaltam korabban is, amikor raakadtam.
Összeraktam egy host header alapján máshova csatlakozó HTTP proxyt, a most kiadott 3.9-es verzióval. Az idevágó osztály a következő: class InterHttpProxy(HttpProxy): def config(self): HttpProxy.config(self) require_host_header = FALSE self.hostlist = {"host1.domain.hu":("192.168.1.1", 80), "host2.domain.hu":("192.168.1.2", 80), "host3.domain.hu":("192.168.1.3", 80), "host4.domain.hu":("192.168.1.4", 80)} def setServerAddress(self, host, port): if self.hostlist.has_key(host): newhost = self.hostlist[host][0] port = self.hostlist[host][1] host = newhost else: proxyLog(self, HTTP_ERROR, 3, "Unknown target host; host='%s'", host) return FALSE return HttpProxy.setServerAddress(self, host, port) Ennek elvileg működnie kellene, de nem teszi, a logban ez található: 2011-02-24T10:12:01+01:00 fw zorp/inter[5832]: core.error(3): (svc/inter_HTTP:191/http): connect() failed; fd='40', error='Invalid argument' 2011-02-24T10:12:01+01:00 fw zorp/inter[5832]: core.error(2): (svc/inter_HTTP:191/http): Connection to remote end failed; local='NULL', remote='AF_INET(0.0.0.1:80)', error='Invalid argument' Mint látod, a célszerver címe 0.0.0.1-re változik, holott nem ez az elvárt. Ha te is ebbe a hibába futottál bele, akkor itt egy patch, ami ezt megoldja: --- a/pylib/Zorp/Resolver.py 2011-02-24 10:13:54.081516501 +0100 +++ b/pylib/Zorp/Resolver.py 2011-02-24 10:11:25.721598563 +0100 @@ -35,7 +35,7 @@ from Zorp import * from SockAddr import SockAddrInet -from socket import gethostbyname +from socket import gethostbyname, gethostbyname_ex import types # NOTE: This is IPv4 specific @@ -207,7 +207,7 @@ </method> """ try: - ip_list = gethostbyname(host) + ip_list = gethostbyname_ex(host)[2] if self.multi: return map(lambda ip: SockAddrInet(ip, port), ip_list) else: Nekem ezzel jól működik. Üdv, i.
A teljes konfigot meg tudod mutatni? Feltettem 3.9-est, meg csináltam az említett policy-t, meg is pacheltem (előtte is csinálta), erre azt mondja, hogy a Listener-ben megadott ip 80-as portjára nem tud bindelni, permission denied, de nincs ott semmi más, véletlen sem, ami használná. Lehet, hogy a végén valamit elrontok, még próbálkozom. Csak összejön már valami... Nekem ez a vége, minden más lényegében ugyanaz, amit írtál: def zorp_http(): Service("intra_http", IntraHttp) Listener(SockAddrInet("10.20.2.169", 80), "intra_http") Köszi!
2011-02-23 19:01 keltezéssel, Farkas Dániel írta:
Nalam ez teljesen hatastalan, probaltam korabban is, amikor raakadtam. Összeraktam egy host header alapján máshova csatlakozó HTTP proxyt, a most kiadott 3.9-es verzióval. Az idevágó osztály a következő:
class InterHttpProxy(HttpProxy): def config(self): HttpProxy.config(self) require_host_header = FALSE self.hostlist = {"host1.domain.hu":("192.168.1.1", 80), "host2.domain.hu":("192.168.1.2", 80), "host3.domain.hu":("192.168.1.3", 80), "host4.domain.hu":("192.168.1.4", 80)} def setServerAddress(self, host, port): if self.hostlist.has_key(host): newhost = self.hostlist[host][0] port = self.hostlist[host][1] host = newhost else: proxyLog(self, HTTP_ERROR, 3, "Unknown target host; host='%s'", host) return FALSE return HttpProxy.setServerAddress(self, host, port)
Ennek elvileg működnie kellene, de nem teszi, a logban ez található:
2011-02-24T10:12:01+01:00 fw zorp/inter[5832]: core.error(3): (svc/inter_HTTP:191/http): connect() failed; fd='40', error='Invalid argument' 2011-02-24T10:12:01+01:00 fw zorp/inter[5832]: core.error(2): (svc/inter_HTTP:191/http): Connection to remote end failed; local='NULL', remote='AF_INET(0.0.0.1:80)', error='Invalid argument'
Mint látod, a célszerver címe 0.0.0.1-re változik, holott nem ez az elvárt. Ha te is ebbe a hibába futottál bele, akkor itt egy patch, ami ezt megoldja:
--- a/pylib/Zorp/Resolver.py 2011-02-24 10:13:54.081516501 +0100 +++ b/pylib/Zorp/Resolver.py 2011-02-24 10:11:25.721598563 +0100 @@ -35,7 +35,7 @@
from Zorp import * from SockAddr import SockAddrInet -from socket import gethostbyname +from socket import gethostbyname, gethostbyname_ex import types
# NOTE: This is IPv4 specific @@ -207,7 +207,7 @@ </method> """ try: - ip_list = gethostbyname(host) + ip_list = gethostbyname_ex(host)[2] if self.multi: return map(lambda ip: SockAddrInet(ip, port), ip_list) else:
Nekem ezzel jól működik.
Üdv,
i. _______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
2011-02-25 15:28 keltezéssel, Farkas Dániel írta:
A teljes konfigot meg tudod mutatni?
Feltettem 3.9-est, meg csináltam az említett policy-t, meg is pacheltem (előtte is csinálta), erre azt mondja, hogy a Listener-ben megadott ip 80-as portjára nem tud bindelni, permission denied, de nincs ott semmi más, véletlen sem, ami használná. Küld be a következőket, utána valószínű tudok segíteni:
cat /etc/zorp/instances.conf netstat -nlp | grep zorp ps axuw | grep zorp i.
---------- #cat /etc/zorp/instances.conf # This file lists the Zorp instances you want to run. # # The instance name and arguments _must_ be separated by spaces instead # of tabs! Otherwise zorpctl will stop working. #instance arguments zorp_http --verbose=9 --policy /etc/zorp/policy-http.py ---------- # netstat -nlp | grep zorp nincs semmi ---------- # ps axuw | grep zorp root 3233 0.0 0.2 3300 736 pts/6 S+ 15:50 0:00 grep zorp itt is csak az aktuális parancs miatt van zorp ---------- #/etc/init.d/zorp restart Restarting Zorp Firewall Suite: Traceback (most recent call last): File "/usr/local/share/zorp/pylib/Zorp/Zorp.py", line 485, in init func() File "/etc/zorp/policy-http.py", line 55, in zorp_http Listener(bindto=SockAddrInet("10.20.2.169", 80), service="intra_http", transparent=TRUE) File "/usr/local/share/zorp/pylib/Zorp/Listener.py", line 189, in __init__ Dispatcher.__init__(self, convertSockAddrToDB(bindto, ZD_PROTO_TCP), service, **kw) File "/usr/local/share/zorp/pylib/Zorp/Dispatch.py", line 388, in __init__ AbstractDispatch.__init__(self, Zorp.firewall_name, bindto, **kw) File "/usr/local/share/zorp/pylib/Zorp/Dispatch.py", line 227, in __init__ self.dispatches.append(Dispatch(self.session_id, bindto, prio, self.accepted, kw)) IOError: Error binding to interface zorp_http! The following errors occurred so far: Zorp instance startup failed, instance='zorp_http', rc='512' ---------- # /var/log/messages részlete: Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(0): (nosession): Starting up; verbose_level='9', version='3.9.0', startup_id='1298645580' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(6): (nosession): System dependant init; sysdep_tproxy='tproxy40' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(7): (szig/listen): Start to listen; fd='10', address='AF_UNIX(/usr/local/var/run/zorp/zorpctl.zorp_http)' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(6): (szig/thread): thread starting; Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Outbound service; zone='site-net', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Inbound service; zone='site-net', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Outbound service; zone='local', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Inbound service; zone='local', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Outbound service; zone='internet', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Inbound service; zone='internet', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(0): (nosession): Error pinging KZorp, it is probably unavailable; result='-1' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(7): (dsp/dispatch:0): Dispatcher on address; local='SA(proto=1,addr=AF_INET(10.20.2.169:80))', prio='100' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(3): (nosession): bind() failed; bind='AF_INET(10.20.2.169:80)', error='Permission denied' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(6): (nosession): Deinitialization requested for instance; name='['zorp_http']' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(0): (nosession): Error initializing policy; Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(0): (nosession): Error loading initial policy, exiting; Feb 25 15:53:01 kenjiro zorp/zorp_http[3240]: core.info(3): Shutting down; version='3.9.0' ------------ és a teljes policy file: from Zorp.Core import * from Zorp.Plug import * from Zorp.Http import * from Zorp.Ftp import * Zorp.firewall_name = 'zorp@kenjiro' InetZone("site-net", "10.20.2.0/24", outbound_services=["*"], inbound_services=["*"]) InetZone("local", "127.0.0.0/8", inbound_services=["*"], outbound_services=["*"]) InetZone("internet", "0.0.0.0/0", inbound_services=["*"], outbound_services=["*"]) class IntraHttp(HttpProxy): def config(self): HttpProxy.config(self) require_host_header = FALSE self.hostlist = {"www2.valami.hu":("127.0.0.1", 50081)} def setServerAddress(self, host, port): if self.hostlist.has_key(host): newhost = self.hostlist[host][0] port = self.hostlist[host][1] host = newhost else: proxyLog(self, HTTP_ERROR, 3, "Unknown target host; host='%s'", host) return FALSE return HttpProxy.setServerAddress(self, host, port) def zorp_http(): Service("intra_http", IntraHttp) Listener(SockAddrInet("10.20.2.169", 80), "intra_http") Köszi a fáradozást!
Küld be a következőket, utána valószínű tudok segíteni: cat /etc/zorp/instances.conf netstat -nlp | grep zorp ps axuw | grep zorp
i. _______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
Próbáltam reprodukálni a hibát az általad küldött fájlokkal, de sem Debian Squeeze, sem Ubuntu Lucid Lynx alatt ez nem sikerült, sem a 3.3-as, sem 3.9-es verzióval. Nekem kézzel indítva a Zorpot mind a négy esetben sikeres volt a bind és elindult az instance. Ami annyiban azért rossz hír, hogy a nálad fennálló hiba megoldásához nem jutottunk közelebb. Így azt volna jó tenni, amit Lázár Imre is írt: 1. megnézni, hogy nálad kézzel indítva mi történik /usr/lib/zorp/zorp --as zorp_http --verbose=6 --policy /etc/zorp/policy.py --foreground --no-syslog 2. ha kézzel sem indul, akkor az strace kimenetét kellene elküldeni strace -o strace.zorp -f elobbi_parancs Üdv, Szilárd On Fri, 2011-02-25 at 15:56 +0100, Farkas Dániel wrote:
---------- #cat /etc/zorp/instances.conf
# This file lists the Zorp instances you want to run. # # The instance name and arguments _must_ be separated by spaces instead # of tabs! Otherwise zorpctl will stop working.
#instance arguments zorp_http --verbose=9 --policy /etc/zorp/policy-http.py
---------- # netstat -nlp | grep zorp nincs semmi
---------- # ps axuw | grep zorp root 3233 0.0 0.2 3300 736 pts/6 S+ 15:50 0:00 grep zorp itt is csak az aktuális parancs miatt van zorp
---------- #/etc/init.d/zorp restart
Restarting Zorp Firewall Suite: Traceback (most recent call last): File "/usr/local/share/zorp/pylib/Zorp/Zorp.py", line 485, in init func() File "/etc/zorp/policy-http.py", line 55, in zorp_http Listener(bindto=SockAddrInet("10.20.2.169", 80), service="intra_http", transparent=TRUE) File "/usr/local/share/zorp/pylib/Zorp/Listener.py", line 189, in __init__ Dispatcher.__init__(self, convertSockAddrToDB(bindto, ZD_PROTO_TCP), service, **kw) File "/usr/local/share/zorp/pylib/Zorp/Dispatch.py", line 388, in __init__ AbstractDispatch.__init__(self, Zorp.firewall_name, bindto, **kw) File "/usr/local/share/zorp/pylib/Zorp/Dispatch.py", line 227, in __init__ self.dispatches.append(Dispatch(self.session_id, bindto, prio, self.accepted, kw)) IOError: Error binding to interface zorp_http!
The following errors occurred so far: Zorp instance startup failed, instance='zorp_http', rc='512'
---------- # /var/log/messages részlete:
Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(0): (nosession): Starting up; verbose_level='9', version='3.9.0', startup_id='1298645580' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(6): (nosession): System dependant init; sysdep_tproxy='tproxy40' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(7): (szig/listen): Start to listen; fd='10', address='AF_UNIX(/usr/local/var/run/zorp/zorpctl.zorp_http)' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(6): (szig/thread): thread starting; Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Outbound service; zone='site-net', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Inbound service; zone='site-net', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Outbound service; zone='local', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Inbound service; zone='local', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Outbound service; zone='internet', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Inbound service; zone='internet', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(0): (nosession): Error pinging KZorp, it is probably unavailable; result='-1' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(7): (dsp/dispatch:0): Dispatcher on address; local='SA(proto=1,addr=AF_INET(10.20.2.169:80))', prio='100' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(3): (nosession): bind() failed; bind='AF_INET(10.20.2.169:80)', error='Permission denied' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(6): (nosession): Deinitialization requested for instance; name='['zorp_http']' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(0): (nosession): Error initializing policy; Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(0): (nosession): Error loading initial policy, exiting; Feb 25 15:53:01 kenjiro zorp/zorp_http[3240]: core.info(3): Shutting down; version='3.9.0'
------------ és a teljes policy file:
from Zorp.Core import * from Zorp.Plug import * from Zorp.Http import * from Zorp.Ftp import *
Zorp.firewall_name = 'zorp@kenjiro'
InetZone("site-net", "10.20.2.0/24", outbound_services=["*"], inbound_services=["*"])
InetZone("local", "127.0.0.0/8", inbound_services=["*"], outbound_services=["*"])
InetZone("internet", "0.0.0.0/0", inbound_services=["*"], outbound_services=["*"])
class IntraHttp(HttpProxy): def config(self): HttpProxy.config(self) require_host_header = FALSE self.hostlist = {"www2.valami.hu":("127.0.0.1", 50081)}
def setServerAddress(self, host, port): if self.hostlist.has_key(host): newhost = self.hostlist[host][0] port = self.hostlist[host][1] host = newhost else: proxyLog(self, HTTP_ERROR, 3, "Unknown target host; host='%s'", host) return FALSE
return HttpProxy.setServerAddress(self, host, port)
def zorp_http(): Service("intra_http", IntraHttp) Listener(SockAddrInet("10.20.2.169", 80), "intra_http")
Köszi a fáradozást!
Küld be a következőket, utána valószínű tudok segíteni: cat /etc/zorp/instances.conf netstat -nlp | grep zorp ps axuw | grep zorp
i. _______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
_______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
Köszönöm a teszteket! Valószínűleg a teszt virtuális gépem hálózati csatolójával lehet gond, mert elkezdett más furaságokat is csinálni. Megpróbálom más környezetben is megnézni, az éles gépemen nem akartam tesztelgetni. Visszajelzek, ha sikerült elindítanom. Köszönöm! 2011.03.02. 9:01 keltezéssel, Szilárd Pfeiffer írta:
Próbáltam reprodukálni a hibát az általad küldött fájlokkal, de sem Debian Squeeze, sem Ubuntu Lucid Lynx alatt ez nem sikerült, sem a 3.3-as, sem 3.9-es verzióval. Nekem kézzel indítva a Zorpot mind a négy esetben sikeres volt a bind és elindult az instance. Ami annyiban azért rossz hír, hogy a nálad fennálló hiba megoldásához nem jutottunk közelebb.
Így azt volna jó tenni, amit Lázár Imre is írt:
1. megnézni, hogy nálad kézzel indítva mi történik
/usr/lib/zorp/zorp --as zorp_http --verbose=6 --policy /etc/zorp/policy.py --foreground --no-syslog
2. ha kézzel sem indul, akkor az strace kimenetét kellene elküldeni
strace -o strace.zorp -f elobbi_parancs
Üdv, Szilárd
On Wed, 2011-03-02 at 09:54 +0100, Farkas Dániel wrote:
Köszönöm a teszteket!
Valószínűleg a teszt virtuális gépem hálózati csatolójával lehet gond, mert elkezdett más furaságokat is csinálni.
hmm.. a halozati csatolo nehany reteggel melyebben van, mint a hiba, amivel talalkoztal.
Megpróbálom más környezetben is megnézni, az éles gépemen nem akartam tesztelgetni.
Visszajelzek, ha sikerült elindítanom.
varjuk :) -- Bazsi
Ez egy sima virtualboxos debain squeeze, csak alaprendszer és még azok a pluszok, amivel frodítani tudtam a zorpot, ilyesmi. Van egy apache és egy lighttpd tesztnek, de egyiksem - sőt semmi sem - ül a 80-as porton. Szerintem tényleg valami kavarodás lehet. Csinálok egy újabb tesztet, és akkor szerintem minden menni fog. Köszi! 2011.03.02. 10:06 keltezéssel, Balazs Scheidler írta:
On Wed, 2011-03-02 at 09:54 +0100, Farkas Dániel wrote:
Köszönöm a teszteket!
Valószínűleg a teszt virtuális gépem hálózati csatolójával lehet gond, mert elkezdett más furaságokat is csinálni. hmm.. a halozati csatolo nehany reteggel melyebben van, mint a hiba, amivel talalkoztal.
Megpróbálom más környezetben is megnézni, az éles gépemen nem akartam tesztelgetni.
Visszajelzek, ha sikerült elindítanom. varjuk :)
Egyébként én is virtuális környezetben teszteltem (VirtualBox) és nálam is csak az alap install volt a feltétlenül szükséges pluszokkal. On sze, 2011-03-02 at 10:09 +0100, Farkas Dániel wrote:
Ez egy sima virtualboxos debain squeeze, csak alaprendszer és még azok a pluszok, amivel frodítani tudtam a zorpot, ilyesmi. Van egy apache és egy lighttpd tesztnek, de egyiksem - sőt semmi sem - ül a 80-as porton. Szerintem tényleg valami kavarodás lehet.
Csinálok egy újabb tesztet, és akkor szerintem minden menni fog.
Köszi!
2011.03.02. 10:06 keltezéssel, Balazs Scheidler írta:
On Wed, 2011-03-02 at 09:54 +0100, Farkas Dániel wrote:
Köszönöm a teszteket!
Valószínűleg a teszt virtuális gépem hálózati csatolójával lehet gond, mert elkezdett más furaságokat is csinálni. hmm.. a halozati csatolo nehany reteggel melyebben van, mint a hiba, amivel talalkoztal.
Megpróbálom más környezetben is megnézni, az éles gépemen nem akartam tesztelgetni.
Visszajelzek, ha sikerült elindítanom. varjuk :)
_______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
On Fri, 2011-02-25 at 15:56 +0100, Farkas Dániel wrote:
---------- #cat /etc/zorp/instances.conf
# This file lists the Zorp instances you want to run. # # The instance name and arguments _must_ be separated by spaces instead # of tabs! Otherwise zorpctl will stop working.
#instance arguments zorp_http --verbose=9 --policy /etc/zorp/policy-http.py
---------- # netstat -nlp | grep zorp nincs semmi
---------- # ps axuw | grep zorp root 3233 0.0 0.2 3300 736 pts/6 S+ 15:50 0:00 grep zorp itt is csak az aktuális parancs miatt van zorp
---------- #/etc/init.d/zorp restart
Restarting Zorp Firewall Suite: Traceback (most recent call last): File "/usr/local/share/zorp/pylib/Zorp/Zorp.py", line 485, in init func() File "/etc/zorp/policy-http.py", line 55, in zorp_http Listener(bindto=SockAddrInet("10.20.2.169", 80), service="intra_http", transparent=TRUE) File "/usr/local/share/zorp/pylib/Zorp/Listener.py", line 189, in __init__ Dispatcher.__init__(self, convertSockAddrToDB(bindto, ZD_PROTO_TCP), service, **kw) File "/usr/local/share/zorp/pylib/Zorp/Dispatch.py", line 388, in __init__ AbstractDispatch.__init__(self, Zorp.firewall_name, bindto, **kw) File "/usr/local/share/zorp/pylib/Zorp/Dispatch.py", line 227, in __init__ self.dispatches.append(Dispatch(self.session_id, bindto, prio, self.accepted, kw)) IOError: Error binding to interface zorp_http!
The following errors occurred so far: Zorp instance startup failed, instance='zorp_http', rc='512'
---------- # /var/log/messages részlete:
Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(0): (nosession): Starting up; verbose_level='9', version='3.9.0', startup_id='1298645580' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(6): (nosession): System dependant init; sysdep_tproxy='tproxy40' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(7): (szig/listen): Start to listen; fd='10', address='AF_UNIX(/usr/local/var/run/zorp/zorpctl.zorp_http)' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(6): (szig/thread): thread starting; Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Outbound service; zone='site-net', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Inbound service; zone='site-net', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Outbound service; zone='local', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Inbound service; zone='local', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Outbound service; zone='internet', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(5): (nosession): Inbound service; zone='internet', service='*' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(0): (nosession): Error pinging KZorp, it is probably unavailable; result='-1' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(7): (dsp/dispatch:0): Dispatcher on address; local='SA(proto=1,addr=AF_INET(10.20.2.169:80))', prio='100' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(3): (nosession): bind() failed; bind='AF_INET(10.20.2.169:80)', error='Permission denied' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.debug(6): (nosession): Deinitialization requested for instance; name='['zorp_http']' Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(0): (nosession): Error initializing policy; Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(0): (nosession): Error loading initial policy, exiting; Feb 25 15:53:01 kenjiro zorp/zorp_http[3240]: core.info(3): Shutting down; version='3.9.0'
Szia, a lenyeg itt van elbujtatva: Feb 25 15:53:00 kenjiro zorp/zorp_http[3240]: core.error(3): (nosession): bind() failed; bind='AF_INET(10.20.2.169:80)', error='Permission denied' A Permission denied OS hibara utal, nincs veletlenul SELinux, AppArmor vagy vmi hasonlo? Okozhat ilyen gondot a capek hibas beallitasa is, bar elvileg a defaultoknak jol kellene mukodniuk. Esetleg egy --no-caps opciot ha megadsz a Zorpnak, akkor _tenyleg_ rootkent fog futni, mikozben egyebkent a jogosultsagainak java reszet eldobja. -- Bazsi
2011-02-25 15:47 keltezéssel, Lázár Imre írta:
2011-02-25 15:28 keltezéssel, Farkas Dániel írta:
A teljes konfigot meg tudod mutatni?
Feltettem 3.9-est, meg csináltam az említett policy-t, meg is pacheltem (előtte is csinálta), erre azt mondja, hogy a Listener-ben megadott ip 80-as portjára nem tud bindelni, permission denied, de nincs ott semmi más, véletlen sem, ami használná. Küld be a következőket, utána valószínű tudok segíteni:
cat /etc/zorp/instances.conf netstat -nlp | grep zorp ps axuw | grep zorp
Ezekből még nem egyértelmű, hogy miért kapsz permission denied-et. Ez nagyon úgy tűnik, hogy nem tud a zorp bindolni, ahova kéne. Ehhez ugye net_admin capability kell. Rootként ennek márpedig mennie kell. Megtennéd, hogy 'kézzel' elindítod, tehát nem a zorpctl-el keresztül: /usr/lib/zorp/zorp -a zorp_http -F -l -v 6 -p /etc/zorp/policy.py Ha így sem megy, akkor egy strace-ben indítsd el, és azt is küld be. Köszi, i.
Szia! overrideable jó helyen van, ellenben a debugban ez a hiba: TypeError: 'tuple' object does not support item assignment#012 Ha jól olvastam utána, akkor nem engedi felülírni a hash elemét. Mindent köszi! U.I.: Sajnos nem értek a python nyelvezetéhet, de már szokom :) Nagyüzemben nyomozok, miért nem írhatom felül.
Szia,
a 3.3-ban változott a session struktúrája, már nincs server_address, hanem egy target_address hash van, ami tartalmazza az összes beállított (pl. FailoverChainerhez kellő) célcímet. A lenti javításokkal már mennie kéne. Az overrideable attribútum helyével kapcsolatban nem vagyok 100%-ig biztos, de szólni fog a Zorp, ha nem jó helyre tettem. Ez az a paraméter, ami azt szabályozza, hogy a proxy osztály módosíthatja-e a routerben beállított célcímet.
Doksit erre találsz, ami bár Pro-hoz van az egyetlen különbség most már a proxyk számossága: http://www.balabit.com/support/documentation/documents/zorp-3.3fr1-guides/zo...
Balint
class IntraHttp(HttpProxy): def config(self): HttpProxy.config(self) self.transparent_mode = TRUE self.request_header["Host"] = (HTTP_HDR_POLICY, self.TargetByHostHeader)
def TargetByHostHeader(self, name, value): if(value == 'site1.loc'): self.session.target_address[0] = SockAddrInet("127.0.0.1" , 50081) return HTTP_HDR_ACCEPT else: self.session.target_address[0] = SockAddrInet("127.0.0.1" , 50080) return HTTP_HDR_ACCEPT
def zorp_http(): Service("intra_http", IntraHttp, router=DirectedRouter(dest_addr=(SockAddrInet("127.0.0.1", 50080),), overrideable=TRUE) Listener(SockAddrInet("10.20.2.160", 80), "intra_http")
On Wed, 2011-02-23 at 18:47 +0100, Farkas Dániel wrote:
Szia!
overrideable jó helyen van, ellenben a debugban ez a hiba:
TypeError: 'tuple' object does not support item assignment#012
Ha jól olvastam utána, akkor nem engedi felülírni a hash elemét.
Mindent köszi!
U.I.: Sajnos nem értek a python nyelvezetéhet, de már szokom :) Nagyüzemben nyomozok, miért nem írhatom felül.
a Pythonban a tuple egy nem mutable objektum, azaz ha egyszer erteket kapott utana modoistani mar nem lehet, csak a teljes tuple cserejevel. pl. a = (1, 2, 3) a[0] = 5 # hibat kapsz a = (3, 4, 5) # igy viszont lecsereltuk az osszes elemet. Python tutorial itt: http://docs.python.org/tutorial/ -- Bazsi
participants (6)
-
Balazs Scheidler
-
Farkas Dániel
-
Kosa Attila
-
Kovács Bálint
-
Lázár Imre
-
Szilárd Pfeiffer