Hi,
The problem that I am facing in a VRF aware system (which is working as syslog-ng relay) is the following:
- I have two network interfaces eth0 and eth1.
- eth0 is bound to internal/default VRF, and it must receive log messages from an "Internal network" where some syslog-ng clients are connected.
- eth1 is bound to MGMT VRF, and it must send log messages to an external syslog-ng server.
Currently, syslog-ng does not support the binding of interfaces in both VRFs.
From the information I gathered:
- Application can talk
across VRF, for this to happen it has to bind the socket to the
specific INTERFACE belonging to the different VRF.
- If Application want use
INTERFACE_ANY option they have to assign to specific VRF and there
connectivity will be limited to that VRF.
Right now, I overcome this problem by using an architecture composed of 2 syslog-ng services:
- one working in the default VRF, which receives messages from eth0 and send the messages to an unix domain socket. Like a default Debian service.
- the other syslog-ng service is running in the MGMT VRF:
/sbin/ip vrf exec MGMT /usr/bin/syslog-ng -F --cfgfile=/etc/syslog-ng/mgmt-syslog-ng.conf --pidfile=/var/lib/syslog-ng/mgmt-syslog-ng.pid --persist-file=/var/lib/syslog-ng/mgmt-syslog-ng.persist --control=/var/lib/syslog-ng/mgmt-syslog-ng.ctl
This service reads log messages from the unix domain socket and sends it to the external syslog-ng server via eth1.
Some documentation on VRF:
Cheers,
Alex