>>>>> On Tue, 12 Feb 2019 14:12:08 -0500, mark bergman said: > > We run the bacula-dir and bacula-sd (v9.4.1) on a CentOS6 server > with multiple network interfaces. I'm seeing a problem with a new client > that I believe is related to asymetric routing and maybe the use of the > server's IP to generate the MD5 CRAM digest.
FWIW, the MD5 CRAM algorithm is not affected by the IP addresses. > Here's a simplified network diagram, best viewed with a fixed-width font: > > > > > [client 1] [client 2] > | | > | | > | +-----------------------+ > | | | > {192.168.1.0/24} {172.16.1.0/24} | > | | | > | | | > ________________________________ | > | 192.168.1.159 172.16.1.159 | | > | | | > | bacula-dir & bacula-sd server | | > | | | > | 10.20.0.159 | | > +-------------------------------+ | > | | > | | > {10.20.0.0/16} | > | | > +---------------+ {172.16.1.0/24} > | | | > _______|______ ___|__________ | > |10.20.0.10 | | default GW | | > | new client | | NAT server |------+ > +------------+ +-------------+ > > > > Bacula is able to backup from legacy client1 and client2 machines with > no problem. > > The client bacula-fd.conf files are identical on each client, except > for the Name field for the FileDaemon itself. > > On the bacula server, 10.20.0.159 is a virtual (secondary) IP. > > I've added a new client, on a new network (10.20.0.0/16). The new client > is single-homed, with a default route via a server that does NAT for > outbound traffic. > > The bacula server is able to communicate with new_client via the 10.20.0.0 > network. > > The new_client was initially able to communicate with the bacula server > through the default gateway and NAT to the bacula server at 172.16.1.159. > > I have created iptables DNAT rules to rewrite outbound traffic from the > new_client that is destined for the bacula server on 172.16.1.159 so > that traffic goes to 10.20.0.159. > > Now, new_client sends all traffic to the bacula server server via 10.20.0.0. > > I haven't looked at the source code, but I'm wondering if the problem is > not in the network traffic itself, but in the authentication challenge. Is > the challenge based on the bacula-dir server's hostname or IP? It appears > as if the bacula server identifies itself as 172.16.1.159 but the client > sees traffic from the server on 10.20.0.159. > > Here are the server & client debugging outputs: > > ------------- Server ----------------- > 1 [root@bacula-server ~]# /opt/bacula/bin/bconsole > 2 Connecting to Director bacula-server:9101 > 3 bacula-server: bsock.c:851-0 socket=8 who=client > host=10.20.0.159 port=63069 > 4 bacula-server: job.c:1767-0 wstorage=neoxl80 > 5 bacula-server: job.c:1776-0 wstore=neoxl80 where=Pool resource > 6 bacula-server: job.c:1430-0 JobId=0 created > Job=-Console-.2019-02-11_18.42.49_02 > 7 bacula-server: cram-md5.c:69-0 send: auth cram-md5 challenge > <757376812.1549928569@bacula-server> ssl=0 > 8 bacula-server: cram-md5.c:133-0 cram-get received: auth > cram-md5 <2004139279.1549928569@bconsole> ssl=0 > 9 bacula-server: cram-md5.c:157-0 sending resp to challenge: > nH+CS8krrl+Qg9+3F/+TZA > 10 1000 OK: 103 bacula-server Version: 9.4.1 (20 December 2018) > 11 Enter a period to cancel a command. > 12 *estimate > 13 Select Job resource (1-72): 9 > 14 bacula-server: ua_cmds.c:2608-0 UA Open database > 15 Using Catalog "MyCatalog" > 16 bacula-server: job.c:1298-0 Created Client new_client record 56 > 17 bacula-server: fd_cmds.c:314-0 Level=F last start time= job= > 18 Connecting to Client new_client at 10.20.20.1:9102 > 19 bacula-server: bsockcore.c:299-0 Current 10.20.20.1:9102 All > 10.20.20.1:9102 > 20 bacula-server: bsockcore.c:228-0 who=Client: new_client > host=10.20.20.1 port=9102 > 21 bacula-server: bsockcore.c:411-0 OK connected to server > Client: new_client 10.20.20.1:9102. According to these debug messages, the server is connecting to client IP 10.20.20.1, not 10.20.0.10. > 22 bacula-server: fd_cmds.c:116-0 Opened connection with File > daemon > 23 bacula-server: authenticate.c:215-0 Sent: Hello Director > bacula-server calling 103 > 24 bacula-server: authenticate.c:237-0 cram_get_auth failed for > Client: new_client > 25 bacula-server: authenticate.c:241-0 Director and File daemon > passwords or names not the same. > 26 bacula-server: fd_cmds.c:123-0 Authentication error with FD. > 27 Failed to connect to Client. > 28 You have messages. > 29 * > -------------------------------------- > > > > ------------- Client ----------------- > 1 bacula-fd: address_conf.c:274-0 Initaddr 0.0.0.0:9102 > 2 new_client: jcr.c:131-0 read_last_jobs seek to 192 > 3 new_client: jcr.c:138-0 Read num_items=0 > 4 new_client: plugins.c:97-0 load_plugins > 5 new_client: plugins.c:136-0 Found plugin: name=bpipe-fd.so > len=11 > 6 new_client: filed.c:270-0 filed: listening on port 9102 > 7 new_client: bnet_server.c:86-0 Addresses 0.0.0.0:9102 > 8 new_client: bsock.c:847-0 socket=4 who=client host=172.16.1.159 > port=22958 > 9 new_client: job.c:317-0 <dird: Hello Director bacula_server > calling 103 > 10 new_client: job.c:340-0 Executing Hello Dir Hello Director > bacula_server calling 103 command. > 11 new_client: cram-md5.c:69-0 send: auth cram-md5 challenge > <1469168970.1549998494@new_client> ssl=0 > 12 new_client: cram-md5.c:71-0 Send challenge comm error. > ERR=Connection reset by peer > 13 new_client: authenticate.c:101-0 cram_auth challenge failed for > Director client > 14 new_client: Fatal Error at authenticate.c:105 because: > 15 Incorrect password given by Director at client. > 16 new_client: job.c:343-0 Quit command loop. Canceled=0 > 17 new_client: job.c:467-0 Calling term_find_files > 18 new_client: job.c:470-0 Done with term_find_files > 19 new_client: job.c:473-0 Done with free_jcr > > ------------------------------------------------ > > In particular, note Line 8, where the bacula server seems to identify > itself as 172.16.1.159 (the primary interface), even though the traffic > was sent via the 10.20.0.0 network. The host IP address in line 8 is the address of the server as returned by accept(2), i.e. at the TCP/IP level, not within the application data. I suggest you temporarily remove the DNAT rules from the client, because I don't see why they are needed for the estimate command. __Martin _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users